[2097] in Moira
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);