]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-146196: Fix Undefined Behavior in _PyUnicodeWriter_WriteASCIIString() ...
authorVictor Stinner <vstinner@python.org>
Fri, 20 Mar 2026 16:26:18 +0000 (17:26 +0100)
committerGitHub <noreply@github.com>
Fri, 20 Mar 2026 16:26:18 +0000 (16:26 +0000)
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 <ashm.tech@proton.me>
Misc/NEWS.d/next/Core_and_Builtins/2026-03-20-13-55-14.gh-issue-146196.Zg70Kb.rst [new file with mode: 0644]
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 (file)
index 0000000..9e03c1b
--- /dev/null
@@ -0,0 +1,2 @@
+Fix potential Undefined Behavior in :c:func:`PyUnicodeWriter_WriteASCII` by
+adding a zero-length check. Patch by Shamil Abdulaev.
index 53f219eb185d77a5b3663e61184318b4eb70c1f5..4a457c4ac9ff3bf77421bb470d75cf0f1022fcfb 100644 (file)
@@ -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) {