summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJoe Guo <joeg@catalyst.net.nz>2018-05-01 16:58:01 +1200
committerAndrew Bartlett <abartlet@samba.org>2018-05-12 02:09:29 +0200
commit7c93fb57f598a8d0d2528c950b9eec2cf5e14189 (patch)
treed1a7536462634b87482f7da286dc3af0ab6ccbe5 /python
parent9cabb16b489b43495472b0e7229ba864daa7d479 (diff)
downloadsamba-7c93fb57f598a8d0d2528c950b9eec2cf5e14189.tar.gz
samba-7c93fb57f598a8d0d2528c950b9eec2cf5e14189.tar.bz2
samba-7c93fb57f598a8d0d2528c950b9eec2cf5e14189.zip
traffic_packets: provision request data for packet_drsuapi_13
The `drsuapi.DsWriteAccountSpnRequest1` struct in this packet was empty before. Samba lets it go but Windows will report an invalid parameter error. Provision the request with proper data, and give user permission to write account SPN. Signed-off-by: Joe Guo <joeg@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'python')
-rw-r--r--python/samba/emulate/traffic_packets.py8
-rw-r--r--python/samba/tests/emulate/traffic_packet.py6
2 files changed, 13 insertions, 1 deletions
diff --git a/python/samba/emulate/traffic_packets.py b/python/samba/emulate/traffic_packets.py
index d23a7669ad9..1413c8bfb80 100644
--- a/python/samba/emulate/traffic_packets.py
+++ b/python/samba/emulate/traffic_packets.py
@@ -242,7 +242,13 @@ def packet_drsuapi_12(packet, conversation, context):
def packet_drsuapi_13(packet, conversation, context):
# DsWriteAccountSpn
req = drsuapi.DsWriteAccountSpnRequest1()
- req.operation = drsuapi.DRSUAPI_DS_SPN_OPERATION_ADD
+ req.operation = drsuapi.DRSUAPI_DS_SPN_OPERATION_REPLACE
+ req.unknown1 = 0 # Unused, must be 0
+ req.object_dn = context.user_dn
+ req.count = 1 # only 1 name
+ spn_name = drsuapi.DsNameString()
+ spn_name.str = 'foo/{}'.format(context.username)
+ req.spn_names = [spn_name]
(drs, handle) = context.get_drsuapi_connection_pair()
(level, res) = drs.DsWriteAccountSpn(handle, 1, req)
return True
diff --git a/python/samba/tests/emulate/traffic_packet.py b/python/samba/tests/emulate/traffic_packet.py
index 8aa6ca03247..61fd9008964 100644
--- a/python/samba/tests/emulate/traffic_packet.py
+++ b/python/samba/tests/emulate/traffic_packet.py
@@ -28,6 +28,7 @@ from samba.emulate import traffic
from samba.samdb import SamDB
import samba.tests
+from samba import sd_utils
class TrafficEmulatorPacketTests(samba.tests.TestCase):
@@ -79,6 +80,11 @@ class TrafficEmulatorPacketTests(samba.tests.TestCase):
self.context.generate_process_local_config(account, self.conversation)
+ # grant user write permission to do things like write account SPN
+ sdutils = sd_utils.SDUtils(self.ldb)
+ mod = "(A;;WP;;;PS)"
+ sdutils.dacl_add_ace(self.context.user_dn, mod)
+
def tearDown(self):
super(TrafficEmulatorPacketTests, self).tearDown()
traffic.clean_up_accounts(self.ldb, 1)