diff options
author | Thomas Wouters <thomas@python.org> | 2001-07-16 15:47:36 (GMT) |
---|---|---|
committer | Thomas Wouters <thomas@python.org> | 2001-07-16 15:47:36 (GMT) |
commit | 1baac7201e99cb83f0a153fb3764c8c8daa9414d (patch) | |
tree | 0a927e45e69b02d6d4d1ea487b88e0a00191c184 /Modules | |
parent | 687a17deaacdde85b7a9f33d36cc1eea9c868039 (diff) | |
download | cpython-1baac7201e99cb83f0a153fb3764c8c8daa9414d.zip cpython-1baac7201e99cb83f0a153fb3764c8c8daa9414d.tar.gz cpython-1baac7201e99cb83f0a153fb3764c8c8daa9414d.tar.bz2 |
Fix SF #441664: Python crash on del of a slice of a mmap
Check for slice/item deletion, which calls slice/item assignment with a NULL
value, and raise a TypeError instead of coredumping. Bugreport and suggested
fix by Alex Martelli.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/mmapmodule.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 63ef72a..d5bc89f 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -663,6 +663,11 @@ mmap_ass_slice(mmap_object *self, int ilow, int ihigh, PyObject *v) else if ((size_t)ihigh > self->size) ihigh = self->size; + if (v == NULL) { + PyErr_SetString(PyExc_TypeError, + "mmap object doesn't support slice deletion"); + return -1; + } if (! (PyString_Check(v)) ) { PyErr_SetString(PyExc_IndexError, "mmap slice assignment must be a string"); @@ -688,6 +693,11 @@ mmap_ass_item(mmap_object *self, int i, PyObject *v) PyErr_SetString(PyExc_IndexError, "mmap index out of range"); return -1; } + if (v == NULL) { + PyErr_SetString(PyExc_TypeError, + "mmap object doesn't support item deletion"); + return -1; + } if (! (PyString_Check(v) && PyString_Size(v)==1) ) { PyErr_SetString(PyExc_IndexError, "mmap assignment must be single-character string"); |