Recommend max_buffer_len instead of max_(str|bin|ext)_len

This commit is contained in:
Inada Naoki 2019-01-25 21:27:46 +09:00
parent 9951b89455
commit 280308e8ce
3 changed files with 34 additions and 13 deletions

View file

@ -1,3 +1,21 @@
0.6.1
======
Release Date: 2019-01-25
This release is for mitigating pain caused by v0.6.1 reduced max input limits
for security reason.
* ``unpackb(data)`` configures ``max_*_len`` options from ``len(data)``,
instead of static default sizes.
* ``Unpacker(max_buffer_len=N)`` configures ``max_*_len`` options from ``N``,
instead of static default sizes.
* ``max_bin_len``, ``max_str_len``, and ``max_ext_len`` are deprecated.
Since this is minor release, it's document only deprecation.
0.6.0 0.6.0
====== ======

View file

@ -273,9 +273,11 @@ cdef class Unpacker(object):
You should set this parameter when unpacking data from untrusted source. You should set this parameter when unpacking data from untrusted source.
:param int max_str_len: :param int max_str_len:
Deprecated, use *max_buffer_size* instead.
Limits max length of str. (default: max_buffer_size or 1024*1024) Limits max length of str. (default: max_buffer_size or 1024*1024)
:param int max_bin_len: :param int max_bin_len:
Deprecated, use *max_buffer_size* instead.
Limits max length of bin. (default: max_buffer_size or 1024*1024) Limits max length of bin. (default: max_buffer_size or 1024*1024)
:param int max_array_len: :param int max_array_len:
@ -285,10 +287,11 @@ cdef class Unpacker(object):
Limits max length of map. (default: max_buffer_size//2 or 32*1024) Limits max length of map. (default: max_buffer_size//2 or 32*1024)
:param int max_ext_len: :param int max_ext_len:
Deprecated, use *max_buffer_size* instead.
Limits max size of ext type. (default: max_buffer_size or 1024*1024) Limits max size of ext type. (default: max_buffer_size or 1024*1024)
:param str encoding: :param str encoding:
Deprecated, use raw instead. Deprecated, use ``raw=False`` instead.
Encoding used for decoding msgpack raw. Encoding used for decoding msgpack raw.
If it is None (default), msgpack raw is deserialized to Python bytes. If it is None (default), msgpack raw is deserialized to Python bytes.
@ -298,13 +301,13 @@ cdef class Unpacker(object):
Example of streaming deserialize from file-like object:: Example of streaming deserialize from file-like object::
unpacker = Unpacker(file_like, raw=False) unpacker = Unpacker(file_like, raw=False, max_buffer_size=10*1024*1024)
for o in unpacker: for o in unpacker:
process(o) process(o)
Example of streaming deserialize from socket:: Example of streaming deserialize from socket::
unpacker = Unpacker(raw=False) unpacker = Unpacker(raw=False, max_buffer_size=10*1024*1024)
while True: while True:
buf = sock.recv(1024**2) buf = sock.recv(1024**2)
if not buf: if not buf:

View file

@ -208,12 +208,12 @@ class Unpacker(object):
You should set this parameter when unpacking data from untrusted source. You should set this parameter when unpacking data from untrusted source.
:param int max_str_len: :param int max_str_len:
(deprecated) Limits max length of str. Deprecated, use *max_buffer_size* instead.
(default: max_buffer_size or 1024*1024) Limits max length of str. (default: max_buffer_size or 1024*1024)
:param int max_bin_len: :param int max_bin_len:
(deprecated) Limits max length of bin. Deprecated, use *max_buffer_size* instead.
(default: max_buffer_size or 1024*1024) Limits max length of bin. (default: max_buffer_size or 1024*1024)
:param int max_array_len: :param int max_array_len:
Limits max length of array. Limits max length of array.
@ -224,18 +224,18 @@ class Unpacker(object):
(default: max_buffer_size//2 or 32*1024) (default: max_buffer_size//2 or 32*1024)
:param int max_ext_len: :param int max_ext_len:
(deprecated) Limits max size of ext type. Deprecated, use *max_buffer_size* instead.
(default: max_buffer_size or 1024*1024) Limits max size of ext type. (default: max_buffer_size or 1024*1024)
example of streaming deserialize from file-like object:: Example of streaming deserialize from file-like object::
unpacker = Unpacker(file_like, raw=False) unpacker = Unpacker(file_like, raw=False, max_buffer_size=10*1024*1024)
for o in unpacker: for o in unpacker:
process(o) process(o)
example of streaming deserialize from socket:: Example of streaming deserialize from socket::
unpacker = Unpacker(raw=False) unpacker = Unpacker(raw=False, max_buffer_size=10*1024*1024)
while True: while True:
buf = sock.recv(1024**2) buf = sock.recv(1024**2)
if not buf: if not buf: