[2097] in Moira

home help back first fref pref prev next nref lref last post

make reg_svr set policy on newly created principals

daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Thu Feb 3 02:09:53 2005

Message-Id: <200502030709.j1379m38016286@brad-majors.mit.edu>
To: moiradev@MIT.EDU, jis@MIT.EDU
Date: Thu, 03 Feb 2005 02:09:48 -0500
From: Garry Zacheiss <zacheiss@MIT.EDU>

This patch makes the reg_svr set a policy ("default") on newly created
principals, fixing a bug reported by Jeff.

I've tested this in the ZONE.MIT.EDU realm, using a reg_svr running on
ttsp.

Garry

Index: kerberos.c
===================================================================
RCS file: /afs/athena.mit.edu/astaff/project/moiradev/repository/moira/reg_svr/kerberos.c,v
retrieving revision 1.6
diff -u -r1.6 kerberos.c
--- kerberos.c	20 Jul 2004 08:11:25 -0000	1.6
+++ kerberos.c	3 Feb 2005 07:08:01 -0000
@@ -116,8 +116,10 @@
   void *kadm_server_handle = NULL;
   kadm5_ret_t status;
   kadm5_principal_ent_rec princ;
+  kadm5_policy_ent_rec defpol;
   kadm5_config_params realm_params;
   char admin_princ[256];
+  long mask = 0;
 #ifdef KERBEROS_TEST_REALM
   char ubuf[256];
 
@@ -131,6 +133,8 @@
   realm_params.mask = 0;
 #endif
 
+  memset(&princ, 0, sizeof(princ));
+
   status = krb5_parse_name(context, username, &(princ.principal));
   if (status)
     return status;
@@ -142,8 +146,16 @@
   if (status)
     goto cleanup;
 
-  status = kadm5_create_principal(kadm_server_handle, &princ,
-				  KADM5_PRINCIPAL, password);
+  /* Assign "default" policy if it exists. */
+  if (!kadm5_get_policy(kadm_server_handle, "default", &defpol))
+    {
+      princ.policy = "default";
+      mask |= KADM5_POLICY;
+      (void) kadm5_free_policy_ent(kadm_server_handle, &defpol);
+    } 
+
+  mask |= KADM5_PRINCIPAL;
+  status = kadm5_create_principal(kadm_server_handle, &princ, mask, password);
 
 cleanup:
   krb5_free_principal(context, princ.principal);

home help back first fref pref prev next nref lref last post