hdb: decorate HDB_entry with context member

Decorate HDB_entry with context and move free_entry callback into HDB structure
itself. Requires updating hdb_free_entry() signature to include HDB parameter.
A follow-up commit will consolidate hdb_entry_ex (which has a single hdb_entry
member) into hdb_entry.
This commit is contained in:
Luke Howard
2022-01-07 12:15:55 +11:00
parent 923067e099
commit c5551775e2
40 changed files with 150 additions and 137 deletions

View File

@@ -190,7 +190,7 @@ get_password_entry(krb5_context context,
}
memset(user, 0, sizeof(*user));
}
_kdc_free_ent (context, user);
_kdc_free_ent (context, db, user);
return ret;
}
@@ -217,7 +217,9 @@ _kdc_do_digest(krb5_context context,
size_t size;
krb5_storage *sp = NULL;
Checksum res;
HDB *serverdb, *userdb;
hdb_entry_ex *server = NULL, *user = NULL;
HDB *clientdb;
hdb_entry_ex *client = NULL;
char *client_name = NULL, *password = NULL;
krb5_data serverNonce;
@@ -292,7 +294,7 @@ _kdc_do_digest(krb5_context context,
krb5_clear_error_message(context);
ret = _kdc_db_fetch(context, config, principal,
HDB_F_GET_SERVER, NULL, NULL, &server);
HDB_F_GET_SERVER, NULL, &serverdb, &server);
if (ret)
goto out;
@@ -314,7 +316,7 @@ _kdc_do_digest(krb5_context context,
}
ret = _kdc_db_fetch(context, config, principal,
HDB_F_GET_CLIENT, NULL, NULL, &client);
HDB_F_GET_CLIENT, NULL, &clientdb, &client);
krb5_free_principal(context, principal);
if (ret)
goto out;
@@ -877,7 +879,7 @@ _kdc_do_digest(krb5_context context,
goto failed;
ret = _kdc_db_fetch(context, config, clientprincipal,
HDB_F_GET_CLIENT, NULL, NULL, &user);
HDB_F_GET_CLIENT, NULL, &userdb, &user);
krb5_free_principal(context, clientprincipal);
if (ret) {
krb5_set_error_message(context, ret,
@@ -1163,7 +1165,7 @@ _kdc_do_digest(krb5_context context,
goto failed;
ret = _kdc_db_fetch(context, config, clientprincipal,
HDB_F_GET_CLIENT, NULL, NULL, &user);
HDB_F_GET_CLIENT, NULL, &userdb, &user);
krb5_free_principal(context, clientprincipal);
if (ret) {
krb5_set_error_message(context, ret, "NTLM user %s not in database",
@@ -1494,11 +1496,11 @@ _kdc_do_digest(krb5_context context,
if (sp)
krb5_storage_free(sp);
if (user)
_kdc_free_ent (context, user);
_kdc_free_ent (context, userdb, user);
if (server)
_kdc_free_ent (context, server);
_kdc_free_ent (context, serverdb, server);
if (client)
_kdc_free_ent (context, client);
_kdc_free_ent (context, clientdb, client);
if (password) {
memset(password, 0, strlen(password));
free (password);