summaryrefslogtreecommitdiff
path: root/lang/python31/files/patch-modules_stropmodule.c
diff options
context:
space:
mode:
authorMartin Wilke <miwi@FreeBSD.org>2008-09-08 00:14:06 +0000
committerMartin Wilke <miwi@FreeBSD.org>2008-09-08 00:14:06 +0000
commit8a1ff65b9b4abb36af6477b5c168037be07d4f71 (patch)
treeb9ac213a94e3a8e1c94343b9c5297f42639bc33e /lang/python31/files/patch-modules_stropmodule.c
parent- Update to 3.45 (diff)
- Security fixes
Multiple vulnerabilities: 1) Various integer overflow errors exist in core modules e.g. stringobject, unicodeobject, bufferobject, longobject, tupleobject, stropmodule, gcmodule, mmapmodule. 2) An integer overflow in the hashlib module can lead to an unreliable cryptographic digest results. 3) Integer overflow errors in the processing of unicode strings can be exploited to cause buffer overflows on 32-bit systems. 4) An integer overflow exists in the PyOS_vsnprintf() function on architectures that do not have a "vsnprintf()" function. 5) An integer underflow error in the PyOS_vsnprintf() function when passing zero-length strings can lead to memory corruption. PR: 127172 (based on) Submitted by: bf <bf2006a@yahoo.com> Obtained from: python svn Security: CVE-2008-2315, CVE-2008-2316, CVE-2008-3142, CVE-2008-3144, CVE-2008-3143. (vuxml come later)
Diffstat (limited to 'lang/python31/files/patch-modules_stropmodule.c')
-rw-r--r--lang/python31/files/patch-modules_stropmodule.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/lang/python31/files/patch-modules_stropmodule.c b/lang/python31/files/patch-modules_stropmodule.c
new file mode 100644
index 000000000000..d7f42ce18871
--- /dev/null
+++ b/lang/python31/files/patch-modules_stropmodule.c
@@ -0,0 +1,31 @@
+--- Modules/stropmodule.c.orig 2008-02-14 11:26:18.000000000 +0000
++++ Modules/stropmodule.c 2008-08-30 10:16:13.000000000 +0100
+@@ -216,6 +216,13 @@
+ return NULL;
+ }
+ slen = PyString_GET_SIZE(item);
++ if (slen > PY_SSIZE_T_MAX - reslen ||
++ seplen > PY_SSIZE_T_MAX - reslen - seplen) {
++ PyErr_SetString(PyExc_OverflowError,
++ "input too long");
++ Py_DECREF(res);
++ return NULL;
++ }
+ while (reslen + slen + seplen >= sz) {
+ if (_PyString_Resize(&res, sz * 2) < 0)
+ return NULL;
+@@ -253,6 +260,14 @@
+ return NULL;
+ }
+ slen = PyString_GET_SIZE(item);
++ if (slen > PY_SSIZE_T_MAX - reslen ||
++ seplen > PY_SSIZE_T_MAX - reslen - seplen) {
++ PyErr_SetString(PyExc_OverflowError,
++ "input too long");
++ Py_DECREF(res);
++ Py_XDECREF(item);
++ return NULL;
++ }
+ while (reslen + slen + seplen >= sz) {
+ if (_PyString_Resize(&res, sz * 2) < 0) {
+ Py_DECREF(item);