8000 do not accept multi-byte types in unpackb · msgpack/msgpack-python@249e051 · GitHub
[go: up one dir, main page]

Skip to content

Commit 249e051

Browse files
committed
do not accept multi-byte types in unpackb
1 parent d104105 commit 249e051

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

msgpack/_unpacker.pyx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,11 @@ def unpackb(object packed, object object_hook=None, object list_hook=None,
141141
if PyObject_CheckBuffer(packed):
142142
buffer_supported = 1
143143
if PyObject_GetBuffer(packed, &view, PyBUF_SIMPLE) == 0:
144-
buf = <char*> view.buf
144+
if view.itemsize != 1:
145+
PyBuffer_Release(&view)
146+
raise ValueError("cannot unpack from multi-byte object")
145147
buf_len = view.len
146-
else:
147-
raise
148+
buf = <char*> view.buf
148149
else:
149150
PyObject_AsReadBuffer(packed, <const void**>&buf, &buf_len)
150151
PyErr_WarnEx(DeprecationWarning,

msgpack/fallback.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,8 @@ def feed(self, next_bytes):
259259
DeprecationWarning)
260260
else:
261261
raise
262-
assert view.itemsize == 1
262+
if view.itemsize != 1:
263+
raise ValueError("cannot unpack from multi-byte object")
263264
L = len(view)
264265
if self._fb_buf_n + L - self._fb_sloppiness > self._max_buffer_size:
265266
raise BufferFull

0 commit comments

Comments
 (0)
0