diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-09-12 06:48:27 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-12 06:48:27 (GMT) |
commit | 9adc87b0f82e5169c5f44739f89212a86013d1c4 (patch) | |
tree | 62093b01728ee2ffad9ae8585abe8b03635ec917 /Python | |
parent | cb356c2ecc0528d47fee2b9f4b32da4fcfb48b3a (diff) | |
download | cpython-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.c | 19 |
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; } |