From: Joseph Sutton Date: Mon, 2 Oct 2023 22:14:30 +0000 (+1300) Subject: s4:kdc: Add ‘msg’ parameter to samba_kdc_get_user_info_dc() X-Git-Tag: tevent-0.16.0~145 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=96ab35bb911b0c5b38ac7f99a3187c6c3fd5098a;p=thirdparty%2Fsamba.git s4:kdc: Add ‘msg’ parameter to samba_kdc_get_user_info_dc() We want to call this function from more places. But some potential callers, found in db-glue.c, have only a partially‐initialized ‘samba_kdc_entry’ structure, without the crucial ‘msg’ member. These callers need to be able to pass in the ldb message as a separate parameter. Signed-off-by: Joseph Sutton Reviewed-by: Andrew Bartlett --- diff --git a/source4/kdc/mit_samba.c b/source4/kdc/mit_samba.c index 7410c9c5886..635f720f9ef 100644 --- a/source4/kdc/mit_samba.c +++ b/source4/kdc/mit_samba.c @@ -486,6 +486,7 @@ krb5_error_code mit_samba_get_pac(struct mit_samba_context *smb_ctx, nt_status = samba_kdc_get_user_info_dc(tmp_ctx, skdc_entry, + skdc_entry->msg, &user_info_dc); if (!NT_STATUS_IS_OK(nt_status)) { talloc_free(tmp_ctx); diff --git a/source4/kdc/pac-glue.c b/source4/kdc/pac-glue.c index 1dbb65cd1be..f3e3ef14636 100644 --- a/source4/kdc/pac-glue.c +++ b/source4/kdc/pac-glue.c @@ -1152,13 +1152,14 @@ NTSTATUS samba_kdc_get_claims_blob(TALLOC_CTX *mem_ctx, NTSTATUS samba_kdc_get_user_info_dc(TALLOC_CTX *mem_ctx, struct samba_kdc_entry *entry, + const struct ldb_message *msg, struct auth_user_info_dc **info_out) { NTSTATUS nt_status; const struct auth_user_info_dc *user_info_dc_from_db = NULL; struct auth_user_info_dc *user_info_dc = NULL; - nt_status = samba_kdc_get_user_info_from_db(entry, entry->msg, &user_info_dc_from_db); + nt_status = samba_kdc_get_user_info_from_db(entry, msg, &user_info_dc_from_db); if (!NT_STATUS_IS_OK(nt_status)) { DBG_ERR("Getting user info for PAC failed: %s\n", nt_errstr(nt_status)); @@ -1257,6 +1258,7 @@ static krb5_error_code samba_kdc_obtain_user_info_dc(TALLOC_CTX *mem_ctx, */ nt_status = samba_kdc_get_user_info_dc(mem_ctx, entry.entry, + entry.entry->msg, &user_info_dc); if (!NT_STATUS_IS_OK(nt_status)) { DBG_ERR("samba_kdc_get_user_info_dc failed: %s\n", @@ -2065,6 +2067,7 @@ static krb5_error_code samba_kdc_get_device_info_blob(TALLOC_CTX *mem_ctx, nt_status = samba_kdc_get_user_info_dc(frame, device, + device->msg, &device_info_dc); if (!NT_STATUS_IS_OK(nt_status)) { DBG_ERR("samba_kdc_get_user_info_dc failed: %s\n", @@ -2927,6 +2930,7 @@ krb5_error_code samba_kdc_check_device(TALLOC_CTX *mem_ctx, } else { nt_status = samba_kdc_get_user_info_dc(frame, device.entry, + device.entry->msg, &device_info); if (!NT_STATUS_IS_OK(nt_status)) { DBG_ERR("samba_kdc_get_user_info_dc failed: %s\n", diff --git a/source4/kdc/pac-glue.h b/source4/kdc/pac-glue.h index bfbef6ee8e5..803cfb2f2b3 100644 --- a/source4/kdc/pac-glue.h +++ b/source4/kdc/pac-glue.h @@ -113,6 +113,7 @@ NTSTATUS samba_kdc_get_user_info_from_db(struct samba_kdc_entry *entry, NTSTATUS samba_kdc_get_user_info_dc(TALLOC_CTX *mem_ctx, struct samba_kdc_entry *entry, + const struct ldb_message *msg, struct auth_user_info_dc **info_out); krb5_error_code samba_kdc_map_policy_err(NTSTATUS nt_status); diff --git a/source4/kdc/wdc-samba4.c b/source4/kdc/wdc-samba4.c index 82b638ed7be..3546b32f18f 100644 --- a/source4/kdc/wdc-samba4.c +++ b/source4/kdc/wdc-samba4.c @@ -125,6 +125,7 @@ static krb5_error_code samba_wdc_get_pac(void *priv, nt_status = samba_kdc_get_user_info_dc(mem_ctx, skdc_entry, + skdc_entry->msg, &user_info_dc); if (!NT_STATUS_IS_OK(nt_status)) { talloc_free(mem_ctx);