Type check return value of cache_dir

This commit is contained in:
Kovid Goyal 2021-02-05 10:34:17 +05:30
parent db0360dc81
commit 726d736aac
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -403,8 +403,10 @@ ensure_state(DiskCache *self) {
if (kc) { if (kc) {
cache_dir = PyObject_CallMethod(kc, "cache_dir", NULL); cache_dir = PyObject_CallMethod(kc, "cache_dir", NULL);
if (cache_dir) { if (cache_dir) {
self->cache_dir = strdup(PyUnicode_AsUTF8(cache_dir)); if (PyUnicode_Check(cache_dir)) {
if (!self->cache_dir) PyErr_NoMemory(); self->cache_dir = strdup(PyUnicode_AsUTF8(cache_dir));
if (!self->cache_dir) PyErr_NoMemory();
} else PyErr_SetString(PyExc_TypeError, "cache_dir() did not return a string");
} }
} }
Py_CLEAR(kc); Py_CLEAR(cache_dir); Py_CLEAR(kc); Py_CLEAR(cache_dir);