Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Lib/test/test_readline.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,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 minumum 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 cannot be negative");
return NULL;
}

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