python:ndr: verify the object type ndr_print() and ndr_unpack()
authorStefan Metzmacher <metze@samba.org>
Tue, 13 Sep 2016 03:51:42 +0000 (05:51 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Wed, 26 Oct 2016 09:20:19 +0000 (11:20 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
python/samba/ndr.py

index 39e4a482efbf32f47ff27f3a536e158a909c2722..7a8f54af192477604a90388b0edce31215e53ddb 100644 (file)
@@ -42,9 +42,15 @@ def ndr_unpack(cls, data, allow_remaining=False):
     :return: Unpacked object
     """
     object = cls()
-    object.__ndr_unpack__(data, allow_remaining=allow_remaining)
+    ndr_unpack = getattr(object, "__ndr_unpack__", None)
+    if ndr_unpack is None:
+        raise TypeError("%r is not a NDR object" % object)
+    ndr_unpack(data, allow_remaining=allow_remaining)
     return object
 
 
 def ndr_print(object):
-    return object.__ndr_print__()
+    ndr_print = getattr(object, "__ndr_print__", None)
+    if ndr_print is None:
+        raise TypeError("%r is not a NDR object" % object)
+    return ndr_print()