diff options
-rw-r--r-- | Lib/test/output/test_mmap | 1 | ||||
-rw-r--r-- | Lib/test/test_mmap.py | 8 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Modules/mmapmodule.c | 1 |
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+') @@ -529,6 +529,7 @@ Michael Scharf Neil Schemenauer David Scherer Gregor Schmid +Ralf Schmitt Peter Schneider-Kamp Sam Schulenburg Stefan Schwarzer @@ -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); |