mirror of https://github.com/python/cpython
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:
parent
2f0da53d28
commit
7adfad850a
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue