summaryrefslogtreecommitdiff
path: root/external/python3
diff options
context:
space:
mode:
Diffstat (limited to 'external/python3')
-rw-r--r--external/python3/UnpackedTarball_python3.mk1
-rw-r--r--external/python3/ubsan.patch.022
2 files changed, 23 insertions, 0 deletions
diff --git a/external/python3/UnpackedTarball_python3.mk b/external/python3/UnpackedTarball_python3.mk
index 72d856fd80a3..8c5b1b71c808 100644
--- a/external/python3/UnpackedTarball_python3.mk
+++ b/external/python3/UnpackedTarball_python3.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\
external/python3/python-3.3.5-vs2013.patch.1 \
external/python3/python-msvc-disable-sse2.patch.1 \
external/python3/python-lsan.patch.0 \
+ external/python3/ubsan.patch.0 \
))
ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD SOLARIS,$(OS)),)
diff --git a/external/python3/ubsan.patch.0 b/external/python3/ubsan.patch.0
new file mode 100644
index 000000000000..acfd1896a104
--- /dev/null
+++ b/external/python3/ubsan.patch.0
@@ -0,0 +1,22 @@
+--- Objects/listobject.c
++++ Objects/listobject.c
+@@ -2036,7 +2036,7 @@
+ if (keys != NULL) {
+ for (i = 0; i < saved_ob_size; i++)
+ Py_DECREF(keys[i]);
+- if (keys != &ms.temparray[saved_ob_size+1])
++ if (keys != ((char *) ms.temparray) + (saved_ob_size+1) * sizeof (PyObject *))
+ PyMem_FREE(keys);
+ }
+
+--- Objects/longobject.c
++++ Objects/longobject.c
+@@ -36,7 +36,7 @@
+ static PyObject *
+ get_small_int(sdigit ival)
+ {
+- PyObject *v = (PyObject*)(small_ints + ival + NSMALLNEGINTS);
++ PyObject *v = (PyObject*)(small_ints + (ival + NSMALLNEGINTS));
+ Py_INCREF(v);
+ #ifdef COUNT_ALLOCS
+ if (ival >= 0)