CVE-2020-25722 s4/dsdb/samldb: samldb_sam_accountname_valid_check() check all values
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Fri, 22 Oct 2021 01:52:49 +0000 (14:52 +1300)
committerJule Anger <janger@samba.org>
Tue, 9 Nov 2021 19:45:33 +0000 (19:45 +0000)
Using dsdb_get_expected_new_values().

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14876

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/dsdb/samdb/ldb_modules/samldb.c

index 7b2f932182243fa4bee423dd53e3a5ba8792b5cd..ce0f205d0a345423f574acc0487ccbb2484f336a 100644 (file)
@@ -533,8 +533,17 @@ static int samldb_sam_accountname_valid_check(struct samldb_ctx *ac)
        bool is_admin;
        struct security_token *user_token = NULL;
        struct ldb_context *ldb = ldb_module_get_ctx(ac->module);
-       struct ldb_message_element *el = dsdb_get_single_valued_attr(ac->msg, "samAccountName",
-                                        ac->req->operation);
+       struct ldb_message_element *el = NULL;
+
+       ret = dsdb_get_expected_new_values(ac,
+                                          ac->msg,
+                                          "samAccountName",
+                                          &el,
+                                          ac->req->operation);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        if (el == NULL || el->num_values == 0) {
                ldb_asprintf_errstring(ldb,
                        "%08X: samldb: 'samAccountName' can't be deleted/empty!",