]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
drsblobs.idl: introduce ForestTrustDataScannerInfo
authorStefan Metzmacher <metze@samba.org>
Tue, 17 Dec 2024 16:44:44 +0000 (17:44 +0100)
committerStefan Metzmacher <metze@samba.org>
Sat, 8 Feb 2025 18:48:35 +0000 (18:48 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jennifer Sutton <jennifersutton@catalyst.net.nz>
librpc/idl/drsblobs.idl
selftest/knownfail.d/samba4.local.ndr [new file with mode: 0644]
source4/torture/ndr/drsblobs.c

index 797307e9c80e702d4dfa970153aa162a94b1f21c..b4f053dc19725f9fa68f0b52e2c296c63f50136d 100644 (file)
@@ -623,11 +623,21 @@ interface drsblobs {
                uint8 data[size];
        } ForestTrustDataBinaryData;
 
+       typedef [flag(NDR_NOALIGN)] struct {
+               [value(FOREST_TRUST_SCANNER_INFO)] ForestTrustInfoRecordType sub_type;
+               ForestTrustDataDomainInfo info;
+       } ForestTrustDataScannerInfo;
+
        typedef [nodiscriminant] union {
                [case(FOREST_TRUST_TOP_LEVEL_NAME)] ForestTrustString name;
                [case(FOREST_TRUST_TOP_LEVEL_NAME_EX)] ForestTrustString name;
                [case(FOREST_TRUST_DOMAIN_INFO)] ForestTrustDataDomainInfo info;
                [case(FOREST_TRUST_BINARY_DATA)] ForestTrustDataBinaryData binary;
+               /*
+                * ForestTrustDataScannerInfo would have the same
+                * definition as ForestTrustDataDomainInfo
+                */
+               [case(FOREST_TRUST_SCANNER_INFO),subcontext(4)] ForestTrustDataScannerInfo scanner_info;
                [default] ForestTrustDataBinaryData unknown;
        } ForestTrustData;
 
diff --git a/selftest/knownfail.d/samba4.local.ndr b/selftest/knownfail.d/samba4.local.ndr
new file mode 100644 (file)
index 0000000..a81b52e
--- /dev/null
@@ -0,0 +1 @@
+^samba4.local.ndr.*.drsblobs.ForestTrustInfo_with_scanner.forest_trust_info_check_out2
index 6b1ef777beff70ca0794b920063d68d613c1b97b..b061d8320e85e50e02cce66763ced2f0a571824b 100644 (file)
@@ -74,7 +74,7 @@ static bool forest_trust_info_check_out2(struct torture_context *tctx,
        const struct ForestTrustInfoRecord *rec = NULL;
        const struct ForestTrustString *n = NULL;
        const struct ForestTrustDataDomainInfo *d = NULL;
-       const struct ForestTrustDataBinaryData *b = NULL;
+       const struct ForestTrustDataScannerInfo *s = NULL;
 
        torture_assert_int_equal(tctx, r->version, 1, "version");
        torture_assert_int_equal(tctx, r->count, 5, "count");
@@ -125,8 +125,14 @@ static bool forest_trust_info_check_out2(struct torture_context *tctx,
        torture_assert_int_equal(tctx, rec->flags, 0, "record flags");
        torture_assert_u64_equal(tctx, rec->timestamp, 0xCF71C4FD01DB4CBAULL, "record timestamp");
        torture_assert_int_equal(tctx, rec->type, FOREST_TRUST_SCANNER_INFO, "record type");
-       b = &rec->data.unknown;
-       torture_assert_int_equal(tctx, b->size, 0x24, "scanner data");
+       s = &rec->data.scanner_info;
+       torture_assert_int_equal(tctx, s->sub_type, FOREST_TRUST_SCANNER_INFO, "record sub type");
+       d = &s->info;
+       torture_assert_int_equal(tctx, d->sid_size, 0x00000000, "record info sid_size");
+       torture_assert_int_equal(tctx, d->dns_name.size, 14, "record name size");
+       torture_assert_str_equal(tctx, d->dns_name.string, "w4edom-l4.base", "record info dns_name string");
+       torture_assert_int_equal(tctx, d->netbios_name.size, 9, "record info netbios_name size");
+       torture_assert_str_equal(tctx, d->netbios_name.string, "W4EDOM-L4", "record info netbios_name string");
 
        return true;
 }