]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
winbindd: let add_trusted_domain() check sid and dns_name are not changed
authorStefan Metzmacher <metze@samba.org>
Tue, 4 Feb 2025 09:16:15 +0000 (10:16 +0100)
committerRalph Boehme <slow@samba.org>
Sat, 8 Feb 2025 15:26:38 +0000 (15:26 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/winbindd/winbindd_util.c

index 48f4c9a67cb2732e15b7a29085ea6c31e19a2e27..1a7c3a30d832c61c8aafed9b9a2a76eb85886d5d 100644 (file)
@@ -150,6 +150,16 @@ static NTSTATUS add_trusted_domain(const char *domain_name,
        if (domain != NULL) {
                struct winbindd_domain *check_domain = NULL;
 
+               if (!dom_sid_equal(&domain->sid, sid)) {
+                       struct dom_sid_buf buf2;
+                       DBG_ERR("SID [%s] changed for domain [%s], "
+                               "expected [%s]\n",
+                               dom_sid_str_buf(sid, &buf),
+                               domain->name,
+                               dom_sid_str_buf(sid, &buf2));
+                       return NT_STATUS_INVALID_PARAMETER;
+               }
+
                for (check_domain = _domain_list;
                     check_domain != NULL;
                     check_domain = check_domain->next)
@@ -176,6 +186,14 @@ static NTSTATUS add_trusted_domain(const char *domain_name,
        if ((domain != NULL) && (dns_name != NULL)) {
                struct winbindd_domain *check_domain = NULL;
 
+               if (!strequal(domain->alt_name, dns_name)) {
+                       DBG_ERR("DNS name [%s] changed for domain [%s], "
+                               "expected [%s]\n",
+                               dns_name, domain->name,
+                               domain->alt_name);
+                       return NT_STATUS_INVALID_PARAMETER;
+               }
+
                for (check_domain = _domain_list;
                     check_domain != NULL;
                     check_domain = check_domain->next)