Ndr: Make sure Strings are null-terminated

Prevents RPC_X_BAD_STUB_DATA when a non-null-terminated string is
provided as an argument.
This commit is contained in:
JaGoTu
2018-11-07 21:26:28 +01:00
parent 2454bf815b
commit 921f066fb8
+6
View File
@@ -102,6 +102,8 @@ class NdrVaryingCString(object):
def pack(cls, data):
if data is None:
return None
if not data.endswith('\x00'):
data += '\x00'
l = len(data)
result = struct.pack("<2I", 0, l)
result += data
@@ -112,6 +114,8 @@ class NdrWString(object):
def pack(cls, data):
if data is None:
return None
if not data.endswith('\x00'):
data += '\x00'
data = data.encode("utf-16-le")
l = (len(data) / 2)
result = struct.pack("<3I", l, 0, l)
@@ -132,6 +136,8 @@ class NdrCString(object):
def pack(cls, data):
if data is None:
return None
if not data.endswith('\x00'):
data += '\x00'
l = len(data)
result = struct.pack("<3I", l, 0, l)
result += data