From 6a2fbb93b4f459219375d4a87ad9e55b63337009 Mon Sep 17 00:00:00 2001 From: rastaman Date: Sun, 10 Sep 2017 10:14:03 +0200 Subject: [PATCH 1/2] Patch to support serialization of JavaByteArrays --- javaobj.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/javaobj.py b/javaobj.py index 9fec6f4..90158fa 100644 --- a/javaobj.py +++ b/javaobj.py @@ -368,6 +368,16 @@ def __iter__(self): def __len__(self): return len(self._data) +class ByteArrayDesc(object): + + def __init__(self): + self.name='[B' + self.serialVersionUID=-5984413125824719648 + self.fields_names=[] + self.fields_types=[] + self.flags = 0x2 + self.superclass=None + # ------------------------------------------------------------------------------ @@ -1199,7 +1209,7 @@ def writeObject(self, obj): :raise RuntimeError: Unsupported type """ log_debug("Writing object of type {0}".format(type(obj).__name__)) - if isinstance(obj, JavaArray): + if isinstance(obj, (JavaArray, JavaByteArray)): # Deserialized Java array self.write_array(obj) elif isinstance(obj, JavaEnum): From d036b45c26f98c8008dc689e12d19d664257bc88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Ma=C3=AEtre?= Date: Sun, 10 Sep 2017 11:11:42 +0200 Subject: [PATCH 2/2] Cleanup --- javaobj.py | 20 +++++++++++--------- tests/bom.ser | Bin 0 -> 445 bytes tests/bom.zip | Bin 0 -> 418 bytes tests/test_zip.py | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 tests/bom.ser create mode 100644 tests/bom.zip create mode 100644 tests/test_zip.py diff --git a/javaobj.py b/javaobj.py index 90158fa..891ee80 100644 --- a/javaobj.py +++ b/javaobj.py @@ -368,15 +368,6 @@ def __iter__(self): def __len__(self): return len(self._data) -class ByteArrayDesc(object): - - def __init__(self): - self.name='[B' - self.serialVersionUID=-5984413125824719648 - self.fields_names=[] - self.fields_types=[] - self.flags = 0x2 - self.superclass=None # ------------------------------------------------------------------------------ @@ -1637,3 +1628,14 @@ def create(self, classdesc): log_debug(">>> java_object: {0}".format(java_object)) return java_object + + +class ByteArrayDesc(object): + + def __init__(self): + self.name = JavaObjectConstants.TYPE_ARRAY + JavaObjectConstants.TYPE_BYTE + self.serialVersionUID = -5984413125824719648 + self.fields_names = [] + self.fields_types = [] + self.flags = JavaObjectConstants.SC_SERIALIZABLE + self.superclass = None diff --git a/tests/bom.ser b/tests/bom.ser new file mode 100644 index 0000000000000000000000000000000000000000..a8a0d6cc02d6cee0efec16712a3d3f6133e0bd6a GIT binary patch literal 445 zcmZ4UmVvdjh=D2EY0YQxA8Z^U511GjDhe1F7#9V2GqZ>=Ffed1EDX~0ZhAJM`yY_^ zgOP!Ook4~nDL+@QA~z>Agp+|eZ^`CJ&h48cODnh;7+JmoRe&|-PW1ObY`}B${a=xZ z@3U`SU}@iGt#FWa8+U=fbiVgftJr@&Z?~(LbgaBv)G=lL)9-Jl*IeGNaxP=8S7_pd4qSi!`jKSI=Sfpl4o4hl;4@2|6n-$%?Ri;f^Va_cT%KF@fB){Xdb3;W zt^bFYe=&@8oY_&4CiTwgeaI0_k4x3PS=zTPoO5r9RNpLX$u$45_@S%v`AZ?ZF{W;F zZ#bXweYjQO&jr_=-|v3oWl@y>v$5f76>pQio!C-yGdt#qYc!PdnVVMd2F}U8lc9f7 zF~#`tn|Z}@5%Zb$NtE65I(zTz?WC(&dk)SL{U$so{c^`Yp|g2Pa~FSHe(DK(fHxzP r95b!}lmG@LFpz=xZ6k;U4^CD{aH0iefHx}}NEss#`T}WtkWK~wlsK#r literal 0 HcmV?d00001 diff --git a/tests/bom.zip b/tests/bom.zip new file mode 100644 index 0000000000000000000000000000000000000000..f2e0212a47adb4288c5da3a008c688b812e0a96b GIT binary patch literal 418 zcmWIWW@Zs#U|`^2SQw<~-Slii_dg)-2O|RmJA({EQhu&pMQ%=L2qyz`-jdCcoZB}? zmR4{xFtU6FssL-uo#^j>*nsEg`@bR+-)G;vz|y|WTHzq;Htqs{>3r{}R