Add missing checks for failures in calls to PyUnicode_AsUTF8String.
Previously a seg fault could occur when passing invalid UTF8 strings (low surrogates), eg passing u"\udcff" to the C layer (Python 3).
This commit is contained in:
parent
069ce1f6e9
commit
b0e29fbdf3
12 changed files with 92 additions and 25 deletions
|
|
@ -25,3 +25,13 @@ if sys.version_info[0:2] < (3, 0):
|
|||
check(unicode_strings.charstring(unicode("hello4")), "hello4")
|
||||
unicode_strings.charstring(u"hell\xb05")
|
||||
unicode_strings.charstring(u"hell\u00f66")
|
||||
|
||||
low_surrogate_string = u"\udcff"
|
||||
try:
|
||||
unicode_strings.instring(low_surrogate_string)
|
||||
# Will succeed with Python 2
|
||||
except TypeError, e:
|
||||
# Python 3 will fail the PyUnicode_AsUTF8String conversion resulting in a TypeError.
|
||||
# The real error is actually:
|
||||
# UnicodeEncodeError: 'utf-8' codec can't encode character '\udcff' in position 0: surrogates not allowed
|
||||
pass
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue