Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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 @@ -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 @@ -336,6 +336,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
Loading