From: Stefan Metzmacher Date: Tue, 17 Dec 2024 16:44:44 +0000 (+0100) Subject: drsblobs.idl: introduce ForestTrustDataScannerInfo X-Git-Tag: tevent-0.17.0~814 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=4f905af2ad4a0af07d684d4745dab6286c1c88d7;p=thirdparty%2Fsamba.git drsblobs.idl: introduce ForestTrustDataScannerInfo Signed-off-by: Stefan Metzmacher Reviewed-by: Jennifer Sutton --- diff --git a/librpc/idl/drsblobs.idl b/librpc/idl/drsblobs.idl index 797307e9c80..b4f053dc197 100644 --- a/librpc/idl/drsblobs.idl +++ b/librpc/idl/drsblobs.idl @@ -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 index 00000000000..a81b52e7bca --- /dev/null +++ b/selftest/knownfail.d/samba4.local.ndr @@ -0,0 +1 @@ +^samba4.local.ndr.*.drsblobs.ForestTrustInfo_with_scanner.forest_trust_info_check_out2 diff --git a/source4/torture/ndr/drsblobs.c b/source4/torture/ndr/drsblobs.c index 6b1ef777bef..b061d8320e8 100644 --- a/source4/torture/ndr/drsblobs.c +++ b/source4/torture/ndr/drsblobs.c @@ -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; }