summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-09-12 06:48:27 (GMT)
committerGitHub <noreply@github.com>2017-09-12 06:48:27 (GMT)
commit9adc87b0f82e5169c5f44739f89212a86013d1c4 (patch)
tree62093b01728ee2ffad9ae8585abe8b03635ec917 /Python
parentcb356c2ecc0528d47fee2b9f4b32da4fcfb48b3a (diff)
downloadcpython-9adc87b0f82e5169c5f44739f89212a86013d1c4.zip
cpython-9adc87b0f82e5169c5f44739f89212a86013d1c4.tar.gz
cpython-9adc87b0f82e5169c5f44739f89212a86013d1c4.tar.bz2
[3.6] bpo-31416: Fix assertion failures in case of a bad warnings.filters or warnings.defaultaction. (GH-3496) (#3509)
Patch by Oren Milman.. (cherry picked from commit 9d984fd2b097c8c29479d1c3eb740995fe1ccb0d)
Diffstat (limited to 'Python')
-rw-r--r--Python/_warnings.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 2b04b90..7270d2c 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -118,7 +118,14 @@ get_default_action(void)
}
return _default_action;
}
-
+ if (!PyUnicode_Check(default_action)) {
+ PyErr_Format(PyExc_TypeError,
+ MODULE_NAME ".defaultaction must be a string, "
+ "not '%.200s'",
+ Py_TYPE(default_action)->tp_name);
+ Py_DECREF(default_action);
+ return NULL;
+ }
Py_DECREF(_default_action);
_default_action = default_action;
return default_action;
@@ -171,6 +178,14 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
mod = PyTuple_GET_ITEM(tmp_item, 3);
ln_obj = PyTuple_GET_ITEM(tmp_item, 4);
+ if (!PyUnicode_Check(action)) {
+ PyErr_Format(PyExc_TypeError,
+ "action must be a string, not '%.200s'",
+ Py_TYPE(action)->tp_name);
+ Py_DECREF(tmp_item);
+ return NULL;
+ }
+
good_msg = check_matched(msg, text);
if (good_msg == -1) {
Py_DECREF(tmp_item);
@@ -210,8 +225,6 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
return action;
}
- PyErr_SetString(PyExc_ValueError,
- MODULE_NAME ".defaultaction not found");
return NULL;
}