https://github.com/python/cpython/commit/6e73225c323ee2c1facc013425adf2b786dc8d47 commit: 6e73225c323ee2c1facc013425adf2b786dc8d47 branch: 3.14 author: Victor Stinner <[email protected]> committer: vstinner <[email protected]> date: 2026-03-20T16:26:18Z summary:
[3.14] gh-146196: Fix Undefined Behavior in _PyUnicodeWriter_WriteASCIIString() (#146201) (#146220) gh-146196: Fix Undefined Behavior in _PyUnicodeWriter_WriteASCIIString() (#146201) Avoid calling memcpy(data + writer->pos, NULL, 0) which has an undefined behavior. (cherry picked from commit cd10a2e65c25682095f6ee4a9b9a181938a50d2e) Co-authored-by: Shamil <[email protected]> files: A Misc/NEWS.d/next/Core_and_Builtins/2026-03-20-13-55-14.gh-issue-146196.Zg70Kb.rst M Objects/unicodeobject.c diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-03-20-13-55-14.gh-issue-146196.Zg70Kb.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-03-20-13-55-14.gh-issue-146196.Zg70Kb.rst new file mode 100644 index 00000000000000..9e03c1bbb0e1cb --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-03-20-13-55-14.gh-issue-146196.Zg70Kb.rst @@ -0,0 +1,2 @@ +Fix potential Undefined Behavior in :c:func:`PyUnicodeWriter_WriteASCII` by +adding a zero-length check. Patch by Shamil Abdulaev. diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 53f219eb185d77..4a457c4ac9ff3b 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -14054,6 +14054,10 @@ _PyUnicodeWriter_WriteASCIIString(_PyUnicodeWriter *writer, if (len == -1) len = strlen(ascii); + if (len == 0) { + return 0; + } + assert(ucs1lib_find_max_char((const Py_UCS1*)ascii, (const Py_UCS1*)ascii + len) < 128); if (writer->buffer == NULL && !writer->overallocate) { _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
