Fix SF bug #1402308, segfault when using mmap(-1, ...)

This didn't crash on Linux, but valgrind complained.
I'm not sure if this test is valid on Windows.

Will backport.
This commit is contained in:
Neal Norwitz 2006-01-11 08:54:45 +00:00
parent ae1df41127
commit 3b4fff8079
5 changed files with 13 additions and 0 deletions

View File

@ -31,6 +31,7 @@ test_mmap
Modifying copy-on-write memory map.
Ensuring copy-on-write maps cannot be resized.
Ensuring invalid access parameter raises exception.
Try opening a bad file descriptor...
Ensuring that passing 0 as map length sets map size to current file size.
Ensuring that passing 0 as map length sets map size to current file size.
Test passed

View File

@ -281,6 +281,14 @@ def test_both():
except OSError:
pass
print ' Try opening a bad file descriptor...'
try:
mmap.mmap(-1, 4096)
except mmap.error:
pass
else:
verify(0, 'expected a mmap.error but did not get it')
# Do a tougher .find() test. SF bug 515943 pointed out that, in 2.2,
# searching for data with embedded \0 bytes didn't work.
f = open(TESTFN, 'w+')

View File

@ -529,6 +529,7 @@ Michael Scharf
Neil Schemenauer
David Scherer
Gregor Schmid
Ralf Schmitt
Peter Schneider-Kamp
Sam Schulenburg
Stefan Schwarzer

View File

@ -216,6 +216,8 @@ Core and builtins
Extension Modules
-----------------
- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...)
- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints.
Also fix ungetmouse() which did not accept arguments properly.
The code now conforms to the documented signature.

View File

@ -918,6 +918,7 @@ new_mmap_object(PyObject *self, PyObject *args, PyObject *kwdict)
#endif
m_obj = PyObject_New (mmap_object, &mmap_object_type);
if (m_obj == NULL) {return NULL;}
m_obj->data = NULL;
m_obj->size = (size_t) map_size;
m_obj->pos = (size_t) 0;
m_obj->fd = dup(fd);