Skip to content

Commit

Permalink
gh-122431: Disallow negative values in readline.append_history_file (
Browse files Browse the repository at this point in the history
…#122469)

Co-authored-by: Victor Stinner <[email protected]>
  • Loading branch information
ZeroIntensity and vstinner authored Dec 5, 2024
1 parent 67b9a53 commit 208b0fb
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Lib/test/test_readline.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,14 @@ def test_write_read_append(self):
# write_history_file can create the target
readline.write_history_file(hfilename)

# Negative values should be disallowed
with self.assertRaises(ValueError):
readline.append_history_file(-42, hfilename)

# See gh-122431, using the minimum signed integer value caused a segfault
with self.assertRaises(ValueError):
readline.append_history_file(-2147483648, hfilename)

def test_nonascii_history(self):
readline.clear_history()
try:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
:func:`readline.append_history_file` now raises a :exc:`ValueError` when given a negative value.
6 changes: 6 additions & 0 deletions Modules/readline.c
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,12 @@ readline_append_history_file_impl(PyObject *module, int nelements,
PyObject *filename_obj)
/*[clinic end generated code: output=5df06fc9da56e4e4 input=784b774db3a4b7c5]*/
{
if (nelements < 0)
{
PyErr_SetString(PyExc_ValueError, "nelements must be positive");
return NULL;
}

PyObject *filename_bytes;
const char *filename;
int err;
Expand Down

0 comments on commit 208b0fb

Please sign in to comment.