traffic_packets: support NT_STATUS_NO_SUCH_DOMAIN in packet_lsarpc_39
authorJoe Guo <joeg@catalyst.net.nz>
Wed, 18 Apr 2018 03:45:10 +0000 (15:45 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 12 May 2018 00:09:28 +0000 (02:09 +0200)
For packet_lsarpc_39, samba will return NT_STATUS_OBJECT_NAME_NOT_FOUND,
however, windows will return NT_STATUS_NO_SUCH_DOMAIN.

Allow both status for now to keep compatiable with both samba and
windows DC.

Signed-off-by: Joe Guo <joeg@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
python/samba/emulate/traffic_packets.py

index 25a02f63c2b97749caa95c4869ee0696115732c7..390041b95137667fe739464d54b10eea4243c45e 100644 (file)
@@ -31,7 +31,10 @@ from samba.credentials import (
     DONT_USE_KERBEROS
 )
 from samba import NTSTATUSError
-from samba.ntstatus import NT_STATUS_OBJECT_NAME_NOT_FOUND
+from samba.ntstatus import (
+    NT_STATUS_OBJECT_NAME_NOT_FOUND,
+    NT_STATUS_NO_SUCH_DOMAIN
+)
 from samba.dcerpc.misc import SEC_CHAN_WKSTA
 import samba
 samba.ensure_third_party_module("dns", "dnspython")
@@ -432,9 +435,11 @@ def packet_lsarpc_39(packet, conversation, context):
     try:
         c.QueryTrustedDomainInfoBySid(pol_handle, domsid, level)
     except NTSTATUSError as error:
-        # Object Not found is the expected result, anything else is a
-        # failure.
-        if not check_runtime_error(error, NT_STATUS_OBJECT_NAME_NOT_FOUND):
+        # Object Not found is the expected result from samba,
+        # while No Such Domain is the expected result from windows,
+        # anything else is a failure.
+        if not check_runtime_error(error, NT_STATUS_OBJECT_NAME_NOT_FOUND) \
+                and not check_runtime_error(error, NT_STATUS_NO_SUCH_DOMAIN):
             raise
     return True