1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-11 16:58:40 +03:00

librpc/idl: Add dnsp_DnsProperty_short

This will be used by a test and the DNS server code to parse short dnsProperty
records which come from Windows servers.

This example is from the value that caused Samba to fail as it
can not be parsed as a normal dnsp_DnsProperty

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

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
(backported to 4.12 from commit 87bf1d687fe7b48a7b6d511dfc7f5414db16119c)

[abartlet@samba.org: resolve conflict due to less ndrdump tests in 4.12]
This commit is contained in:
Andrew Bartlett 2020-05-14 10:21:19 +12:00 committed by Karolin Seeger
parent 11abc95573
commit 5065390697
2 changed files with 37 additions and 0 deletions

View File

@ -260,4 +260,20 @@ interface dnsp
[switch_is(id)] dnsPropertyData data;
uint32 name;
} dnsp_DnsProperty;
/*
* this is the format for the dnsProperty attribute in the DNS
* partitions in AD when the wDataLength is 0. This is an
* invalid format seen from some Windows servers in the same
* domain.
*/
typedef [flag(NDR_NOALIGN),public] struct {
[range(0, 0), value(0)] uint32 wDataLength;
uint32 namelength;
[value(0)] uint32 flag;
[value(1)] uint32 version;
dns_property_id id;
[switch_is(DSPROPERTY_ZONE_EMPTY)] dnsPropertyData data;
uint32 name;
} dnsp_DnsProperty_short;
}

View File

@ -437,3 +437,24 @@ dump OK
self.fail(e)
self.assertEqual(actual, expected)
def test_ndrdump_short_dnsProperty(self):
expected = b'''pull returned Success
dnsp_DnsProperty_short: struct dnsp_DnsProperty_short
wDataLength : 0x00000000 (0)
namelength : 0x00000000 (0)
flag : 0x00000000 (0)
version : 0x00000001 (1)
id : DSPROPERTY_ZONE_NS_SERVERS_DA (146)
data : union dnsPropertyData(case 0)
name : 0x00000000 (0)
dump OK
'''
command = (
"ndrdump dnsp dnsp_DnsProperty_short struct --base64-input "
"--input AAAAAAAAAAAAAAAAAQAAAJIAAAAAAAAA")
try:
actual = self.check_output(command)
except BlackboxProcessError as e:
self.fail(e)
self.assertEqual(actual, expected)