From 921f066fb880ed9cb454077fe3860eae9b8554dc Mon Sep 17 00:00:00 2001 From: JaGoTu Date: Wed, 7 Nov 2018 21:26:28 +0100 Subject: [PATCH] Ndr: Make sure Strings are null-terminated Prevents RPC_X_BAD_STUB_DATA when a non-null-terminated string is provided as an argument. --- windows/rpc/ndr.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/windows/rpc/ndr.py b/windows/rpc/ndr.py index 53aa97c..a3025d5 100644 --- a/windows/rpc/ndr.py +++ b/windows/rpc/ndr.py @@ -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