]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:kdc: Add ‘msg’ parameter to samba_kdc_get_user_info_dc()
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Mon, 2 Oct 2023 22:14:30 +0000 (11:14 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 12 Oct 2023 23:13:32 +0000 (23:13 +0000)
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 <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/kdc/mit_samba.c
source4/kdc/pac-glue.c
source4/kdc/pac-glue.h
source4/kdc/wdc-samba4.c

index 7410c9c5886065008e8b02172a592c80aad4237a..635f720f9ef344c7fceeee073c3d43d957bdbeb3 100644 (file)
@@ -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);
index 1dbb65cd1be640b194622774e69c6569d496c413..f3e3ef14636c13bbc498f56f7d25ccb6b0c0242e 100644 (file)
@@ -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",
index bfbef6ee8e58edad71321f7e3a548a831988f9e4..803cfb2f2b37f80b3b3cb977dc92d4bf6e1d2b7d 100644 (file)
@@ -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);
index 82b638ed7beaa565fed1ba0183d8b7eaa3678e1c..3546b32f18ffce45b06c17b482656eb7f1dcfca5 100644 (file)
@@ -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);