Eryk Sun added the comment:
> Now we have an example, and can backport that patch.
More seriously it's possible to get a buffer over-read using NumPy:
>>> import numpy
>>> int(buffer(numpy.array('123', dtype='c')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '123\xe1\x18\x7f'
I backported the modification to PyNumber_Int and PyNumber_Long, using
PyString_FromStringAndSize and PyString_AS_STRING. It works as expected:
Python 2.7.10+ (2.7:5d88c1d413b9+, Nov 20 2015, 04:58:55)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> int(buffer('123test', 1, 2))
23
[41951 refs]
>>> long(buffer('123test', 1, 2))
23L
[41952 refs]
----------
nosy: +eryksun
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue25678>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com