Author: Ronan Lamy <[email protected]>
Branch: PyBuffer-backport
Changeset: r91254:647b63731eca
Date: 2017-05-11 16:53 +0100
http://bitbucket.org/pypy/pypy/changeset/647b63731eca/

Log:    Restrict marshalling to old-style buffers

diff --git a/pypy/objspace/std/marshal_impl.py 
b/pypy/objspace/std/marshal_impl.py
--- a/pypy/objspace/std/marshal_impl.py
+++ b/pypy/objspace/std/marshal_impl.py
@@ -7,6 +7,7 @@
 from pypy.interpreter.special import Ellipsis
 from pypy.interpreter.pycode import PyCode
 from pypy.interpreter import unicodehelper
+from pypy.interpreter.buffer import BufferInterfaceNotFound
 from pypy.objspace.std.boolobject import W_BoolObject
 from pypy.objspace.std.bytesobject import W_BytesObject
 from pypy.objspace.std.complexobject import W_ComplexObject
@@ -73,14 +74,12 @@
                 func(space, w_obj, m)
                 return
 
-    # any unknown object implementing the buffer protocol is
+    # any unknown object implementing the old-style buffer protocol is
     # accepted and encoded as a plain string
     try:
-        s = space.readbuf_w(w_obj)
-    except OperationError as e:
-        if e.match(space, space.w_TypeError):
-            raise oefmt(space.w_ValueError, "unmarshallable object")
-        raise
+        s = w_obj.readbuf_w(space)
+    except BufferInterfaceNotFound:
+        raise oefmt(space.w_ValueError, "unmarshallable object")
     m.atom_str(TYPE_STRING, s.as_str())
 
 def get_unmarshallers():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to