Skip to content

Commit

Permalink
[3.13] gh-127165: Disallow embedded NULL characters in _interpreters (
Browse files Browse the repository at this point in the history
GH-127199) (#127463)

gh-127165: Disallow embedded NULL characters in `_interpreters` (GH-127199)
(cherry picked from commit 46bfd26)

Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
  • Loading branch information
miss-islington and ZeroIntensity authored Dec 1, 2024
1 parent 5017c81 commit 2813a61
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Lib/test/test_interpreters/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1650,6 +1650,10 @@ def test_set___main___attrs(self):
self.assertIs(after2, None)
self.assertEqual(after3.type.__name__, 'AssertionError')

with self.assertRaises(ValueError):
# GH-127165: Embedded NULL characters broke the lookup
_interpreters.set___main___attrs(interpid, {"\x00": 1})

with self.subTest('from C-API'):
with self.interpreter_from_capi() as interpid:
with self.assertRaisesRegex(InterpreterError, 'unrecognized'):
Expand Down
5 changes: 5 additions & 0 deletions Python/crossinterp.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,11 @@ _copy_string_obj_raw(PyObject *strobj, Py_ssize_t *p_size)
return NULL;
}

if (size != (Py_ssize_t)strlen(str)) {
PyErr_SetString(PyExc_ValueError, "found embedded NULL character");
return NULL;
}

char *copied = PyMem_RawMalloc(size+1);
if (copied == NULL) {
PyErr_NoMemory();
Expand Down

0 comments on commit 2813a61

Please sign in to comment.