gh-122431: Disallow negative values in `readline.append_history_file` (#122469)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Peter Bierma 2024-12-05 11:07:38 -05:00 committed by GitHub
parent 67b9a5331a
commit 208b0fb645
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 0 deletions

View File

@ -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:

View File

@ -0,0 +1 @@
:func:`readline.append_history_file` now raises a :exc:`ValueError` when given a negative value.

View File

@ -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;