summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-01-11 08:54:45 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-01-11 08:54:45 (GMT)
commit3b4fff8079834433ba75ee0873c538410cd082c9 (patch)
tree7301da8a2959b7ca9d28db9beb5f9af55eef3f4e
parentae1df4112710fdfc7ffb6248b6a61b6b3cadd880 (diff)
downloadcpython-3b4fff8079834433ba75ee0873c538410cd082c9.zip
cpython-3b4fff8079834433ba75ee0873c538410cd082c9.tar.gz
cpython-3b4fff8079834433ba75ee0873c538410cd082c9.tar.bz2
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.
-rw-r--r--Lib/test/output/test_mmap1
-rw-r--r--Lib/test/test_mmap.py8
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS2
-rw-r--r--Modules/mmapmodule.c1
5 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/output/test_mmap b/Lib/test/output/test_mmap
index 02b24bc..1ce4943 100644
--- a/Lib/test/output/test_mmap
+++ b/Lib/test/output/test_mmap
@@ -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
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 849f170..6930317 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -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+')
diff --git a/Misc/ACKS b/Misc/ACKS
index 42fa409..ad77e03 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -529,6 +529,7 @@ Michael Scharf
Neil Schemenauer
David Scherer
Gregor Schmid
+Ralf Schmitt
Peter Schneider-Kamp
Sam Schulenburg
Stefan Schwarzer
diff --git a/Misc/NEWS b/Misc/NEWS
index d5a2361..6729ea8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index dbb3fcd..2ff4494 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -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);