Kaydet (Commit) b6717011 authored tarafından Eli Bendersky's avatar Eli Bendersky

Issue #13612: Fix a buffer overflow in case of a multi-byte encoding.

This is a belated backport of f7b47fb30169; Patch by Serhiy Storchaka.
üst 06fbac5e
......@@ -883,6 +883,12 @@ def check_encoding(encoding):
>>> check_encoding("iso-8859-15")
>>> check_encoding("cp437")
>>> check_encoding("mac-roman")
>>> check_encoding("gbk")
Traceback (most recent call last):
ValueError: multi-byte encodings are not supported
>>> check_encoding("cp037")
Traceback (most recent call last):
ParseError: unknown encoding: line 1, column 30
"""
ET.XML("<?xml version='1.0' encoding='%s'?><xml />" % encoding)
......
......@@ -2427,6 +2427,8 @@ expat_unknown_encoding_handler(XMLParserObject *self, const XML_Char *name,
if (PyUnicode_GET_SIZE(u) != 256) {
Py_DECREF(u);
PyErr_SetString(PyExc_ValueError,
"multi-byte encodings are not supported");
return XML_STATUS_ERROR;
}
......
......@@ -1252,6 +1252,13 @@ PyUnknownEncodingHandler(void *encodingHandlerData,
if (_u_string == NULL)
return result;
if (PyUnicode_GET_SIZE(_u_string) != 256) {
Py_DECREF(_u_string);
PyErr_SetString(PyExc_ValueError,
"multi-byte encodings are not supported");
return result;
}
for (i = 0; i < 256; i++) {
/* Stupid to access directly, but fast */
Py_UNICODE c = _u_string->str[i];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment