]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-89455: Fix an uninitialized bool in exception print context. (#91466)
authorGregory P. Smith <greg@krypto.org>
Thu, 14 Apr 2022 18:26:25 +0000 (11:26 -0700)
committerGitHub <noreply@github.com>
Thu, 14 Apr 2022 18:26:25 +0000 (11:26 -0700)
Fix an uninitialized bool in exception print context.

`struct exception_print_context.need_close` was uninitialized.

Found by oss-fuzz in a test case running under the undefined behavior sanitizer.

https://oss-fuzz.com/testcase-detail/6217746058182656

```
Python/pythonrun.c:1241:28: runtime error: load of value 253, which is not a valid value for type 'bool'
    #0 0xbf2203 in print_chained cpython3/Python/pythonrun.c:1241:28
    #1 0xbea4bb in print_exception_cause_and_context cpython3/Python/pythonrun.c:1320:19
    #2 0xbea4bb in print_exception_recursive cpython3/Python/pythonrun.c:1470:13
    #3 0xbe9e39 in _PyErr_Display cpython3/Python/pythonrun.c:1517:9
```

Pretty obvious what the ommission was upon code inspection.

Misc/NEWS.d/next/Core and Builtins/2022-04-11-18-44-19.gh-issue-89455.d0qMYd.rst [new file with mode: 0644]
Python/pythonrun.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-04-11-18-44-19.gh-issue-89455.d0qMYd.rst b/Misc/NEWS.d/next/Core and Builtins/2022-04-11-18-44-19.gh-issue-89455.d0qMYd.rst
new file mode 100644 (file)
index 0000000..e22b4ac
--- /dev/null
@@ -0,0 +1,2 @@
+Fixed an uninitialized bool value in the traceback printing code path that
+was introduced by the initial bpo-45292 exception groups work.
index d117b790dfdaaebb9b2d85ad30d4a51b0a3e4009..e086f0f345c22237b66ab38239b861f9d5ed81c6 100644 (file)
@@ -1504,6 +1504,7 @@ _PyErr_Display(PyObject *file, PyObject *exception, PyObject *value, PyObject *t
     struct exception_print_context ctx;
     ctx.file = file;
     ctx.exception_group_depth = 0;
+    ctx.need_close = false;
     ctx.max_group_width = PyErr_MAX_GROUP_WIDTH;
     ctx.max_group_depth = PyErr_MAX_GROUP_DEPTH;