(_kadm5_setup_entry): change so that it takes three masks, one for

what bits to set and one for each of principal and def containing the
bits that are set there.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6130 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-05-04 18:42:29 +00:00
parent 1275ebffb2
commit f69d7045c9

View File

@@ -59,18 +59,33 @@ attr_to_flags(unsigned attr, HDBFlags *flags)
flags->client = 1; /* XXX */ flags->client = 1; /* XXX */
} }
/*
* Create the hdb entry `ent' based on data from `princ' with
* `princ_mask' specifying what fields to be gotten from there and
* `mask' specifying what fields we want filled in.
*/
kadm5_ret_t kadm5_ret_t
_kadm5_setup_entry(hdb_entry *ent, kadm5_principal_ent_t princ, _kadm5_setup_entry(hdb_entry *ent,
kadm5_principal_ent_t def, u_int32_t mask) u_int32_t mask,
kadm5_principal_ent_t princ,
u_int32_t princ_mask,
kadm5_principal_ent_t def,
u_int32_t def_mask)
{ {
if(mask & KADM5_PRINC_EXPIRE_TIME) if(mask & KADM5_PRINC_EXPIRE_TIME
&& princ_mask & KADM5_PRINC_EXPIRE_TIME)
set_value(ent->valid_end, princ->princ_expire_time); set_value(ent->valid_end, princ->princ_expire_time);
if(mask & KADM5_PW_EXPIRATION) if(mask & KADM5_PW_EXPIRATION
&& princ_mask & KADM5_PW_EXPIRATION)
set_value(ent->pw_end, princ->pw_expiration); set_value(ent->pw_end, princ->pw_expiration);
if(mask & KADM5_ATTRIBUTES) if(mask & KADM5_ATTRIBUTES) {
if (princ_mask & KADM5_ATTRIBUTES) {
attr_to_flags(princ->attributes, &ent->flags); attr_to_flags(princ->attributes, &ent->flags);
else if(def){ } else if(def_mask & KADM5_ATTRIBUTES) {
/* attr_to_flags(def->attributes, &ent->flags); */ attr_to_flags(def->attributes, &ent->flags);
ent->flags.invalid = 0;
} else {
ent->flags.client = 1; ent->flags.client = 1;
ent->flags.server = 1; ent->flags.server = 1;
ent->flags.forwardable = 1; ent->flags.forwardable = 1;
@@ -78,27 +93,30 @@ _kadm5_setup_entry(hdb_entry *ent, kadm5_principal_ent_t princ,
ent->flags.renewable = 1; ent->flags.renewable = 1;
ent->flags.postdate = 1; ent->flags.postdate = 1;
} }
}
if(mask & KADM5_MAX_LIFE) { if(mask & KADM5_MAX_LIFE) {
if(princ->max_life) if(princ_mask & KADM5_MAX_LIFE)
set_value(ent->max_life, princ->max_life); set_value(ent->max_life, princ->max_life);
else if(def && def->max_life) else if(def_mask & KADM5_MAX_LIFE)
set_value(ent->max_life, def->max_life); set_value(ent->max_life, def->max_life);
} }
if(mask & KADM5_KVNO) if(mask & KADM5_KVNO
&& princ_mask & KADM5_KVNO)
ent->kvno = princ->kvno; ent->kvno = princ->kvno;
if(mask & KADM5_MAX_RLIFE) { if(mask & KADM5_MAX_RLIFE) {
if(princ->max_renewable_life) if(princ_mask & KADM5_MAX_RLIFE)
set_value(ent->max_renew, princ->max_renewable_life); set_value(ent->max_renew, princ->max_renewable_life);
else if(def && def->max_renewable_life) else if(def_mask & KADM5_MAX_RLIFE)
set_value(ent->max_renew, def->max_renewable_life); set_value(ent->max_renew, def->max_renewable_life);
} }
if(mask & KADM5_KEY_DATA) { if(mask & KADM5_KEY_DATA
&& princ_mask & KADM5_KEY_DATA) {
_kadm5_set_keys2(ent, princ->n_key_data, princ->key_data); _kadm5_set_keys2(ent, princ->n_key_data, princ->key_data);
} }
if(mask & KADM5_TL_DATA){ if(mask & KADM5_TL_DATA) {
/* XXX */ /* XXX */
} }
if(mask & KADM5_FAIL_AUTH_COUNT){ if(mask & KADM5_FAIL_AUTH_COUNT) {
/* XXX */ /* XXX */
} }
return 0; return 0;