2025-05-27 19:36:16 +00:00
committed by Git OBS Bridge
parent 3d0b1fd2f3
commit 01d7c30105

View File

@@ -20,13 +20,13 @@ Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
--- ---
Include/cpython/bytesobject.h | 4 Include/cpython/bytesobject.h | 4
Include/cpython/unicodeobject.h | 13 ++ Include/cpython/unicodeobject.h | 13 ++
Lib/test/test_codeccallbacks.py | 39 ++++++ Lib/test/test_codeccallbacks.py | 40 ++++++
Lib/test/test_codecs.py | 52 ++++++-- Lib/test/test_codecs.py | 52 ++++++--
Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst | 2 Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst | 2
Objects/bytesobject.c | 54 +++++--- Objects/bytesobject.c | 54 +++++---
Objects/unicodeobject.c | 61 +++++++--- Objects/unicodeobject.c | 61 +++++++---
Parser/string_parser.c | 26 ++-- Parser/string_parser.c | 26 ++--
8 files changed, 194 insertions(+), 57 deletions(-) 8 files changed, 195 insertions(+), 57 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst create mode 100644 Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst
Index: Python-3.12.10/Include/cpython/bytesobject.h Index: Python-3.12.10/Include/cpython/bytesobject.h
@@ -71,7 +71,7 @@ Index: Python-3.12.10/Include/cpython/unicodeobject.h
Index: Python-3.12.10/Lib/test/test_codeccallbacks.py Index: Python-3.12.10/Lib/test/test_codeccallbacks.py
=================================================================== ===================================================================
--- Python-3.12.10.orig/Lib/test/test_codeccallbacks.py 2025-05-27 17:27:04.334768069 +0200 --- Python-3.12.10.orig/Lib/test/test_codeccallbacks.py 2025-05-27 17:27:04.334768069 +0200
+++ Python-3.12.10/Lib/test/test_codeccallbacks.py 2025-05-27 21:05:08.061522938 +0200 +++ Python-3.12.10/Lib/test/test_codeccallbacks.py 2025-05-27 21:33:39.393417492 +0200
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
import codecs import codecs
import html.entities import html.entities
@@ -89,7 +89,7 @@ Index: Python-3.12.10/Lib/test/test_codeccallbacks.py
baddata = [ baddata = [
("ascii", b"\xff"), ("ascii", b"\xff"),
("utf-7", b"++"), ("utf-7", b"++"),
@@ -1159,6 +1160,42 @@ @@ -1159,6 +1160,43 @@
for (encoding, data) in baddata: for (encoding, data) in baddata:
self.assertEqual(data.decode(encoding, "test.mutating"), "\u4242") self.assertEqual(data.decode(encoding, "test.mutating"), "\u4242")
@@ -114,6 +114,7 @@ Index: Python-3.12.10/Lib/test/test_codeccallbacks.py
+ self.assertEqual(decode(input, 'test.mutating2'), (expected, len(input))) + self.assertEqual(decode(input, 'test.mutating2'), (expected, len(input)))
+ self.assertIn(msg, str(cm.warning)) + self.assertIn(msg, str(cm.warning))
+ +
+
+ check(br'\x0n\z', '\u0404\n\\z', r"invalid escape sequence '\z'") + check(br'\x0n\z', '\u0404\n\\z', r"invalid escape sequence '\z'")
+ check(br'\x0n\501', '\u0404\n\u0141', r"invalid octal escape sequence '\501'") + check(br'\x0n\501', '\u0404\n\u0141', r"invalid octal escape sequence '\501'")
+ check(br'\x0z', '\u0404\\z', r"invalid escape sequence '\z'") + check(br'\x0z', '\u0404\\z', r"invalid escape sequence '\z'")
@@ -331,7 +332,7 @@ Index: Python-3.12.10/Objects/bytesobject.c
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "invalid octal escape sequence '\\%.3s'", - "invalid octal escape sequence '\\%.3s'",
- first_invalid_escape) < 0) - first_invalid_escape) < 0)
+ "invalid octal escape sequence '\\\\%o'", + "invalid octal escape sequence '\\%o'",
+ first_invalid_escape_char) < 0) + first_invalid_escape_char) < 0)
{ {
Py_DECREF(result); Py_DECREF(result);
@@ -453,7 +454,7 @@ Index: Python-3.12.10/Objects/unicodeobject.c
if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
- "invalid octal escape sequence '\\%.3s'", - "invalid octal escape sequence '\\%.3s'",
- first_invalid_escape) < 0) - first_invalid_escape) < 0)
+ "invalid octal escape sequence '\\\\%o'", + "invalid octal escape sequence '\\%o'",
+ first_invalid_escape_char) < 0) + first_invalid_escape_char) < 0)
{ {
Py_DECREF(result); Py_DECREF(result);