]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:dsdb/common: let dsdb_trust_normalize_forest_info_step1() handle BINARY and SCANNE...
authorStefan Metzmacher <metze@samba.org>
Wed, 12 Feb 2025 15:41:02 +0000 (16:41 +0100)
committerRalph Boehme <slow@samba.org>
Sat, 22 Feb 2025 16:00:36 +0000 (16:00 +0000)
Note for scanner records we need to filter out duplicates,
but binary records may exist multiple times.

Review with: git show -w

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source4/dsdb/common/util_trusts.c

index cdd7f8ac83067938b27975aeec2b57cfeb429b73..d6ce2fe198a734e12be2748478e445a4edd4366b 100644 (file)
@@ -958,6 +958,19 @@ NTSTATUS dsdb_trust_normalize_forest_info_step1(TALLOC_CTX *mem_ctx,
                        nsid = ninfo->domain_sid;
                        break;
 
+               case LSA_FOREST_TRUST_BINARY_DATA:
+                       continue;
+
+               case LSA_FOREST_TRUST_SCANNER_INFO:
+                       if (nftr->flags & ~LSA_TLN_DISABLED_NEW) {
+                               return NT_STATUS_INVALID_PARAMETER;
+                       }
+                       ninfo = &nftr->forest_trust_data.scanner_info;
+                       ntln = &ninfo->dns_domain_name;
+                       nnb = &ninfo->netbios_domain_name;
+                       nsid = ninfo->domain_sid;
+                       break;
+
                default:
                        TALLOC_FREE(frame);
                        return NT_STATUS_INVALID_PARAMETER;
@@ -1032,6 +1045,13 @@ NTSTATUS dsdb_trust_normalize_forest_info_step1(TALLOC_CTX *mem_ctx,
                                csid = cinfo->domain_sid;
                                break;
 
+                       case LSA_FOREST_TRUST_SCANNER_INFO:
+                               cinfo = &cftr->forest_trust_data.scanner_info;
+                               ctln = &cinfo->dns_domain_name;
+                               cnb = &cinfo->netbios_domain_name;
+                               csid = cinfo->domain_sid;
+                               break;
+
                        default:
                                TALLOC_FREE(frame);
                                return NT_STATUS_INVALID_PARAMETER;
@@ -1055,6 +1075,13 @@ NTSTATUS dsdb_trust_normalize_forest_info_step1(TALLOC_CTX *mem_ctx,
                                break;
                        }
 
+                       if (cftr->type == LSA_FOREST_TRUST_SCANNER_INFO) {
+                               /*
+                                * ignore the sid
+                                */
+                               continue;
+                       }
+
                        cmp = dom_sid_compare(nsid, csid);
                        if (cmp == 0) {
                                nftr = NULL;