Bug #2111: mmap segfaults when trying to write a block opened with PROT_READ

Thanks to Thomas Herve for the fix.
This commit is contained in:
Christian Heimes 2008-02-15 08:20:11 +00:00
parent 2f0da53d28
commit 7adfad850a
3 changed files with 13 additions and 0 deletions

View File

@ -426,6 +426,13 @@ class MmapTests(unittest.TestCase):
return mmap.mmap.__new__(klass, -1, *args, **kwargs)
anon_mmap(PAGESIZE)
def test_prot_readonly(self):
mapsize = 10
open(TESTFN, "wb").write("a"*mapsize)
f = open(TESTFN, "rb")
m = mmap.mmap(f.fileno(), mapsize, prot=mmap.PROT_READ)
self.assertRaises(TypeError, m.write, "foo")
def test_main():
run_unittest(MmapTests)

View File

@ -1142,6 +1142,8 @@ Library
Extension Modules
-----------------
- Bug #2111: mmap segfaults when trying to write a block opened with PROT_READ
- #2063: correct order of utime and stime in os.times() result on Windows.
- Patch #1736: Fix file name handling of _msi.FCICreate.

View File

@ -1122,6 +1122,10 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict)
"mmap invalid access parameter.");
}
if (prot == PROT_READ) {
access = ACCESS_READ;
}
#ifdef HAVE_FSTAT
# ifdef __VMS
/* on OpenVMS we must ensure that all bytes are written to the file */