*kentry_ptr = NULL;
- kentry = malloc(sizeof(krb5_db_entry));
+ kentry = calloc(1, sizeof(krb5_db_entry));
if (kentry == NULL) {
return ENOMEM;
}
- ZERO_STRUCTP(kentry);
-
kentry->magic = KRB5_KDB_MAGIC_NUMBER;
kentry->len = KRB5_KDB_V1_BASE_LENGTH;
kentry->attributes = KRB5_KDB_DISALLOW_ALL_TIX;
code = krb5_copy_principal(context, princ, &kentry->princ);
}
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
code = krb5_dbe_update_mod_princ_data(context, kentry, now, kentry->princ);
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
kentry->n_key_data = 1;
kentry->key_data = calloc(1, sizeof(krb5_key_data));
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
key_data->key_data_kvno = 1;
key_data->key_data_type[0] = ENCTYPE_UNKNOWN;
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
return ENOMEM;
}
- ZERO_STRUCTP(kentry);
-
kentry->magic = KRB5_KDB_MAGIC_NUMBER;
kentry->len = KRB5_KDB_V1_BASE_LENGTH;
code = krb5_copy_principal(context, princ, &kentry->princ);
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
code = krb5_dbe_update_mod_princ_data(context, kentry, now, kentry->princ);
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
code = mit_samba_generate_salt(&salt);
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
/* create a random password */
code = mit_samba_generate_random_password(&pwd);
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
}
code = krb5_c_string_to_key(context, enctype, &pwd, &salt, &key);
SAFE_FREE(pwd.data);
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
kentry->n_key_data = 1;
kentry->key_data = calloc(1, sizeof(krb5_key_data));
if (code != 0) {
- ks_free_krb5_db_entry(context, kentry);
+ krb5_db_free_principal(context, kentry);
return code;
}
return code;
}
-void kdb_samba_db_free_principal(krb5_context context,
- krb5_db_entry *entry)
-{
- struct mit_samba_context *mit_ctx;
-
- mit_ctx = ks_get_context(context);
- if (mit_ctx == NULL) {
- return;
- }
-
- ks_free_krb5_db_entry(context, entry);
-}
-
krb5_error_code kdb_samba_db_put_principal(krb5_context context,
krb5_db_entry *entry,
char **db_args)
return KRB5_KDB_DB_INUSE;
}
+#if KRB5_KDB_API_VERSION >= 8
+krb5_error_code kdb_samba_db_iterate(krb5_context context,
+ char *match_entry,
+ int (*func)(krb5_pointer, krb5_db_entry *),
+ krb5_pointer func_arg,
+ krb5_flags iterflags)
+#else
krb5_error_code kdb_samba_db_iterate(krb5_context context,
char *match_entry,
int (*func)(krb5_pointer, krb5_db_entry *),
krb5_pointer func_arg)
+#endif
{
struct mit_samba_context *mit_ctx;
krb5_db_entry *kentry = NULL;