s4:dsdb: Store account DN as part of gMSA update structure
authorJo Sutton <josutton@catalyst.net.nz>
Tue, 16 Apr 2024 02:03:05 +0000 (14:03 +1200)
committerJo Sutton <josutton@catalyst.net.nz>
Fri, 19 Apr 2024 01:15:36 +0000 (13:15 +1200)
Signed-off-by: Jo Sutton <josutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/dsdb/gmsa/util.c
source4/dsdb/gmsa/util.h

index 96e3a859ce49838f669ec4bb185d8bb27dd5ad21..a34a86f0a04b10b236fa954c9fd847d458fc35ad 100644 (file)
@@ -810,6 +810,7 @@ static int gmsa_create_update(TALLOC_CTX *mem_ctx,
        struct ldb_request *old_pw_req = NULL;
        struct ldb_request *new_pw_req = NULL;
        struct ldb_request *pwd_id_req = NULL;
+       struct ldb_dn *account_dn = NULL;
        struct gmsa_update_pwd new_pwd = {};
        struct gmsa_update *update = NULL;
        NTSTATUS status = NT_STATUS_OK;
@@ -908,6 +909,12 @@ static int gmsa_create_update(TALLOC_CTX *mem_ctx,
                goto out;
        }
 
+       account_dn = ldb_dn_copy(tmp_ctx, msg->dn);
+       if (account_dn == NULL) {
+               ret = ldb_oom(ldb);
+               goto out;
+       }
+
        update = talloc(tmp_ctx, struct gmsa_update);
        if (update == NULL) {
                ret = ldb_oom(ldb);
@@ -915,6 +922,7 @@ static int gmsa_create_update(TALLOC_CTX *mem_ctx,
        }
 
        *update = (struct gmsa_update){
+               .dn = talloc_steal(update, account_dn),
                .old_pw_req = talloc_steal(update, old_pw_req),
                .new_pw_req = talloc_steal(update, new_pw_req),
                .pwd_id_req = talloc_steal(update, pwd_id_req)};
index 7d5430eae288c41a68cd50478d41474dc60c0655..9b7e3ee322289715ec389753d35d54ee058e8565 100644 (file)
@@ -31,6 +31,8 @@
 #include "lib/util/time.h"
 
 struct gmsa_update {
+       /* The DN of the gMSA to be updated. */
+       struct ldb_dn *dn;
        /* An optional request to set the previous password. */
        struct ldb_request *old_pw_req;
        /* A request to set the current password. */