diff options
author | Benjamin Peterson <benjamin@python.org> | 2015-03-02 16:18:40 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2015-03-02 16:18:40 (GMT) |
commit | 5061e67f0f6e08e99b2ca3b560cd64d8cc5aa515 (patch) | |
tree | fe5862d2addbc871e72c1fd6c44c18c0b8da1df8 | |
parent | 3f9e381030a93651a27ed4c12708fcfee1a48605 (diff) | |
parent | b779bfba458a8147cce44100cbc14ec304807197 (diff) | |
download | cpython-5061e67f0f6e08e99b2ca3b560cd64d8cc5aa515.zip cpython-5061e67f0f6e08e99b2ca3b560cd64d8cc5aa515.tar.gz cpython-5061e67f0f6e08e99b2ca3b560cd64d8cc5aa515.tar.bz2 |
merge 3.3 (#23367)
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Modules/unicodedata.c | 13 |
2 files changed, 12 insertions, 3 deletions
@@ -53,6 +53,8 @@ Library - Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. +- Issue #23367: Fix possible overflows in the unicodedata module. + - Issue #23361: Fix possible overflow in Windows subprocess creation code. Build diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c index 47d2937..507cef3 100644 --- a/Modules/unicodedata.c +++ b/Modules/unicodedata.c @@ -553,10 +553,17 @@ nfd_nfkd(PyObject *self, PyObject *input, int k) stackptr = 0; isize = PyUnicode_GET_LENGTH(input); + space = isize; /* Overallocate at most 10 characters. */ - space = (isize > 10 ? 10 : isize) + isize; + if (space > 10) { + if (space <= PY_SSIZE_T_MAX - 10) + space += 10; + } + else { + space *= 2; + } osize = space; - output = PyMem_New(Py_UCS4, space); + output = PyMem_NEW(Py_UCS4, space); if (!output) { PyErr_NoMemory(); return NULL; @@ -703,7 +710,7 @@ nfc_nfkc(PyObject *self, PyObject *input, int k) /* We allocate a buffer for the output. If we find that we made no changes, we still return the NFD result. */ - output = PyMem_New(Py_UCS4, len); + output = PyMem_NEW(Py_UCS4, len); if (!output) { PyErr_NoMemory(); Py_DECREF(result); |