Bug report
Bug description:
Original gist: https://gist.github.com/devdanzin/60aed55f44fba133ee2d34d46aa8d197
readline.c: Missing NULL check on PyLong_FromLong in setup_readline
Summary
PyLong_FromLong(0L) at lines 1418-1419 stored in begidx/endidx without NULL check. On OOM during module init, readline.get_begidx() does Py_NewRef(NULL) → segfault.
Reproducer
import _testcapi, sys
if "readline" in sys.modules: del sys.modules["readline"]
for n in range(1, 80):
if "readline" in sys.modules: del sys.modules["readline"]
_testcapi.set_nomemory(n, 0)
try:
import readline
_testcapi.remove_mem_hooks()
break
except MemoryError:
_testcapi.remove_mem_hooks()
except ImportError:
_testcapi.remove_mem_hooks()
except:
_testcapi.remove_mem_hooks()
# Assertion: obj != NULL in PyStackRef_FromPyObjectSteal
The original gist said we should check the result of PyLong_FromLong(0L), but I think this is a false positive, because 0 is small int and should not failed while creating a Python int object from it.
However there are other line of code in this file for calling PyLong_FromLong with begidx/endidx withoud check the result:
|
state->begidx = PyLong_FromLong((long) start); |
|
state->endidx = PyLong_FromLong((long) end); |
I guess the LLM found a real bug but reported it at the wrong place. Either way, we should fix it.
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
Bug report
Bug description:
Original gist: https://gist.github.com/devdanzin/60aed55f44fba133ee2d34d46aa8d197
The original gist said we should check the result of
PyLong_FromLong(0L), but I think this is a false positive, because 0 is small int and should not failed while creating a Python int object from it.However there are other line of code in this file for calling
PyLong_FromLongwithbegidx/endidxwithoud check the result:cpython/Modules/readline.c
Lines 1330 to 1331 in d333e5a
I guess the LLM found a real bug but reported it at the wrong place. Either way, we should fix it.
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs