https://github.com/python/cpython/commit/fad36bf38248130bc48b81a5e7c31a7649a6456e
commit: fad36bf38248130bc48b81a5e7c31a7649a6456e
branch: main
author: Valery Fedorenko <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2025-01-31T20:06:30+05:30
summary:

gh-126108: Fix potential null pointer dereference in 
`PySys_AddWarnOptionUnicode` (#126118)

files:
A Misc/NEWS.d/next/Security/2024-10-29-09-15-10.gh-issue-126108.eTIjHY.rst
M Python/sysmodule.c

diff --git 
a/Misc/NEWS.d/next/Security/2024-10-29-09-15-10.gh-issue-126108.eTIjHY.rst 
b/Misc/NEWS.d/next/Security/2024-10-29-09-15-10.gh-issue-126108.eTIjHY.rst
new file mode 100644
index 00000000000000..9f2c7e84d4dff0
--- /dev/null
+++ b/Misc/NEWS.d/next/Security/2024-10-29-09-15-10.gh-issue-126108.eTIjHY.rst
@@ -0,0 +1 @@
+Fix a possible ``NULL`` pointer dereference in 
:c:func:`!PySys_AddWarnOptionUnicode`.
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 7e4cb45af05672..11b96c8455de14 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -2847,6 +2847,7 @@ PySys_ResetWarnOptions(void)
 static int
 _PySys_AddWarnOptionWithError(PyThreadState *tstate, PyObject *option)
 {
+    assert(tstate != NULL);
     PyObject *warnoptions = get_warnoptions(tstate);
     if (warnoptions == NULL) {
         return -1;
@@ -2862,11 +2863,11 @@ PyAPI_FUNC(void)
 PySys_AddWarnOptionUnicode(PyObject *option)
 {
     PyThreadState *tstate = _PyThreadState_GET();
+    _Py_EnsureTstateNotNULL(tstate);
+    assert(!_PyErr_Occurred(tstate));
     if (_PySys_AddWarnOptionWithError(tstate, option) < 0) {
         /* No return value, therefore clear error state if possible */
-        if (tstate) {
-            _PyErr_Clear(tstate);
-        }
+        _PyErr_Clear(tstate);
     }
 }
 

_______________________________________________
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]

Reply via email to