mirror of
https://github.com/python/cpython.git
synced 2026-05-06 12:49:07 -04:00
gh-140594: Fix an out of bounds read when feeding NUL byte to PyOS_StdioReadline() (#140910)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
@@ -200,6 +200,14 @@ class CmdLineTest(unittest.TestCase):
|
||||
self.assertTrue(data.find(b'1 loop') != -1)
|
||||
self.assertTrue(data.find(b'__main__.Timer') != -1)
|
||||
|
||||
@support.cpython_only
|
||||
def test_null_byte_in_interactive_mode(self):
|
||||
# gh-140594: Fix an out of bounds read when a single NUL character
|
||||
# is read from the standard input in interactive mode.
|
||||
proc = spawn_python('-i')
|
||||
proc.communicate(b'\x00', timeout=support.SHORT_TIMEOUT)
|
||||
self.assertEqual(proc.returncode, 0)
|
||||
|
||||
def test_relativedir_bug46421(self):
|
||||
# Test `python -m unittest` with a relative directory beginning with ./
|
||||
# Note: We have to switch to the project's top module's directory, as per
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
Fix an out of bounds read when a single NUL character is read from the standard input.
|
||||
Patch by Shamil Abdulaev.
|
||||
+1
-1
@@ -344,7 +344,7 @@ PyOS_StdioReadline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)
|
||||
break;
|
||||
}
|
||||
n += strlen(p + n);
|
||||
} while (p[n-1] != '\n');
|
||||
} while (n == 0 || p[n-1] != '\n');
|
||||
|
||||
pr = (char *)PyMem_RawRealloc(p, n+1);
|
||||
if (pr == NULL) {
|
||||
|
||||
Reference in New Issue
Block a user