From 76965a2a14e6c0bf8085a0cece8fd74b89618af3 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Wed, 27 May 2015 17:05:29 -0500 Subject: [PATCH] Add missing initialization of mandatory --- lib/hdb/ext.c | 2 ++ lib/hdb/keys.c | 3 +++ lib/kadm5/chpass_s.c | 2 ++ lib/kadm5/modify_s.c | 4 ++++ lib/kadm5/randkey_s.c | 1 + lib/kadm5/set_keys.c | 2 ++ 6 files changed, 14 insertions(+) diff --git a/lib/hdb/ext.c b/lib/hdb/ext.c index bdb8f9c2d..ecefe931b 100644 --- a/lib/hdb/ext.c +++ b/lib/hdb/ext.c @@ -453,6 +453,7 @@ hdb_entry_set_kvno_diff_clnt(krb5_context context, hdb_entry *entry, if (diff > 16384) return EINVAL; + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_hist_kvno_diff_clnt; ext.data.u.hist_kvno_diff_clnt = diff; return hdb_replace_extension(context, entry, &ext); @@ -485,6 +486,7 @@ hdb_entry_set_kvno_diff_svc(krb5_context context, hdb_entry *entry, if (diff > 16384) return EINVAL; + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_hist_kvno_diff_svc; ext.data.u.hist_kvno_diff_svc = diff; return hdb_replace_extension(context, entry, &ext); diff --git a/lib/hdb/keys.c b/lib/hdb/keys.c index 61049f4e6..42a8ee9d7 100644 --- a/lib/hdb/keys.c +++ b/lib/hdb/keys.c @@ -227,6 +227,8 @@ hdb_add_current_keys_to_history(krb5_context context, hdb_entry *entry) ext->data.element = choice_HDB_extension_data_hist_keys; } + ext->mandatory = FALSE; + /* * Copy in newest old keyset */ @@ -285,6 +287,7 @@ hdb_add_history_key(krb5_context context, hdb_entry *entry, krb5_kvno kvno, Key extp = &ext; } + extp->mandatory = FALSE; hist_keys = &extp->data.u.hist_keys; for (i = 0; i < hist_keys->len; i++) { diff --git a/lib/kadm5/chpass_s.c b/lib/kadm5/chpass_s.c index e9b94d96f..1ee471473 100644 --- a/lib/kadm5/chpass_s.c +++ b/lib/kadm5/chpass_s.c @@ -119,6 +119,7 @@ change(void *server_handle, HDB_extension ext; memset(&ext, 0, sizeof (ext)); + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_hist_keys; ret = hdb_replace_extension(context->context, &ent.entry, &ext); if (ret) @@ -235,6 +236,7 @@ kadm5_s_chpass_principal_with_key(void *server_handle, HDB_extension ext; memset(&ext, 0, sizeof (ext)); + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_hist_keys; ext.data.u.hist_keys.len = 0; ext.data.u.hist_keys.val = NULL; diff --git a/lib/kadm5/modify_s.c b/lib/kadm5/modify_s.c index 4f46e8c33..c810a5d90 100644 --- a/lib/kadm5/modify_s.c +++ b/lib/kadm5/modify_s.c @@ -89,6 +89,9 @@ modify_principal(void *server_handle, if ((mask & KADM5_POLICY)) { HDB_extension ext; + memset(&ext, 0, sizeof(ext)); + /* XXX should be TRUE, but we don't yet support policies */ + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_policy; ext.data.u.policy = strdup(princ->policy); if (ext.data.u.policy == NULL) { @@ -97,6 +100,7 @@ modify_principal(void *server_handle, } /* This calls free_HDB_extension(), freeing ext.data.u.policy */ ret = hdb_replace_extension(context->context, &ent.entry, &ext); + free(ext.data.u.policy); if (ret) goto out2; } diff --git a/lib/kadm5/randkey_s.c b/lib/kadm5/randkey_s.c index 5843e4445..336f3dfc1 100644 --- a/lib/kadm5/randkey_s.c +++ b/lib/kadm5/randkey_s.c @@ -97,6 +97,7 @@ kadm5_s_randkey_principal(void *server_handle, HDB_extension ext; memset(&ext, 0, sizeof (ext)); + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_hist_keys; ext.data.u.hist_keys.len = 0; ext.data.u.hist_keys.val = NULL; diff --git a/lib/kadm5/set_keys.c b/lib/kadm5/set_keys.c index af4802b59..751ab05d7 100644 --- a/lib/kadm5/set_keys.c +++ b/lib/kadm5/set_keys.c @@ -129,6 +129,7 @@ _kadm5_set_keys2(kadm5_server_context *context, memset(&keys, 0, sizeof (keys)); memset(&hkset, 0, sizeof (hkset)); /* set set_time */ memset(&ext, 0, sizeof (ext)); + ext.mandatory = FALSE; ext.data.element = choice_HDB_extension_data_hist_keys; memset(hist_keys, 0, sizeof (*hist_keys)); @@ -254,6 +255,7 @@ _kadm5_set_keys2(kadm5_server_context *context, */ free_HDB_extension(&ext); free_Keys(&ent->keys); + free_hdb_keyset(&hkset); ent->keys = keys; hdb_entry_set_pw_change_time(context->context, ent, 0); hdb_entry_clear_password(context->context, ent);