Commit 568867a6 authored by Benjamin Peterson's avatar Benjamin Peterson

check for NULL tp_as_mapping in PySequence_(Get/Set/Del)Slice #9834

parent e861598d
......@@ -108,6 +108,13 @@ Library
guaranteed to exist in all Python implementations and the names of hash
algorithms available in the current process.
C-API
-----
- Issue #9834: Don't segfault in PySequence_GetSlice, PySequence_SetSlice, or
PySequence_DelSlice when the object doesn't have any mapping operations
defined.
Tools/Demos
-----------
......
......@@ -1612,7 +1612,7 @@ PySequence_GetSlice(PyObject *s, Py_ssize_t i1, Py_ssize_t i2)
if (!s) return null_error();
mp = s->ob_type->tp_as_mapping;
if (mp->mp_subscript) {
if (mp && mp->mp_subscript) {
PyObject *res;
PyObject *slice = _PySlice_FromIndices(i1, i2);
if (!slice)
......@@ -1690,7 +1690,7 @@ PySequence_SetSlice(PyObject *s, Py_ssize_t i1, Py_ssize_t i2, PyObject *o)
}
mp = s->ob_type->tp_as_mapping;
if (mp->mp_ass_subscript) {
if (mp && mp->mp_ass_subscript) {
int res;
PyObject *slice = _PySlice_FromIndices(i1, i2);
if (!slice)
......@@ -1715,7 +1715,7 @@ PySequence_DelSlice(PyObject *s, Py_ssize_t i1, Py_ssize_t i2)
}
mp = s->ob_type->tp_as_mapping;
if (mp->mp_ass_subscript) {
if (mp && mp->mp_ass_subscript) {
int res;
PyObject *slice = _PySlice_FromIndices(i1, i2);
if (!slice)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment