Kaydet (Commit) cfed46e0 authored tarafından Victor Stinner's avatar Victor Stinner

PyUnicode_FromKindAndData() fails with a ValueError if size < 0

üst 42885206
...@@ -1906,6 +1906,10 @@ _PyUnicode_FromUCS4(const Py_UCS4 *u, Py_ssize_t size) ...@@ -1906,6 +1906,10 @@ _PyUnicode_FromUCS4(const Py_UCS4 *u, Py_ssize_t size)
PyObject* PyObject*
PyUnicode_FromKindAndData(int kind, const void *buffer, Py_ssize_t size) PyUnicode_FromKindAndData(int kind, const void *buffer, Py_ssize_t size)
{ {
if (size < 0) {
PyErr_SetString(PyExc_ValueError, "size must be positive");
return NULL;
}
switch(kind) { switch(kind) {
case PyUnicode_1BYTE_KIND: case PyUnicode_1BYTE_KIND:
return _PyUnicode_FromUCS1(buffer, size); return _PyUnicode_FromUCS1(buffer, size);
...@@ -1914,7 +1918,6 @@ PyUnicode_FromKindAndData(int kind, const void *buffer, Py_ssize_t size) ...@@ -1914,7 +1918,6 @@ PyUnicode_FromKindAndData(int kind, const void *buffer, Py_ssize_t size)
case PyUnicode_4BYTE_KIND: case PyUnicode_4BYTE_KIND:
return _PyUnicode_FromUCS4(buffer, size); return _PyUnicode_FromUCS4(buffer, size);
default: default:
assert(0 && "invalid kind");
PyErr_SetString(PyExc_SystemError, "invalid kind"); PyErr_SetString(PyExc_SystemError, "invalid kind");
return NULL; return NULL;
} }
......
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