diff options
author | Christian Heimes <christian@cheimes.de> | 2012-09-11 15:31:08 (GMT) |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2012-09-11 15:31:08 (GMT) |
commit | e9a6d62d9fb6f0e88318a4279b54288b5ab08ee3 (patch) | |
tree | 80ad4a37b30f4b5faaac144ac334433db1d6ae89 | |
parent | 6d29352cfd76d569198dd2fd2eb02b2b0c5a8c44 (diff) | |
parent | 5557a9c73fc52276c3fb382491b3f9fe5999a042 (diff) | |
download | cpython-e9a6d62d9fb6f0e88318a4279b54288b5ab08ee3.zip cpython-e9a6d62d9fb6f0e88318a4279b54288b5ab08ee3.tar.gz cpython-e9a6d62d9fb6f0e88318a4279b54288b5ab08ee3.tar.bz2 |
Fix null pointer dereferencing in structmember.c PyMember_SetOne() for T_CHAR. _PyUnicode_AsStringAndSize() can return NULL without touching the len argument. Also remove unnecessary PyUnicode_Check(), _PyUnicode_AsStringAndSize() performance the test again. CID 486815
-rw-r--r-- | Python/structmember.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/Python/structmember.c b/Python/structmember.c index ddedea5..af0296d 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -254,12 +254,8 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) char *string; Py_ssize_t len; - if (!PyUnicode_Check(v)) { - PyErr_BadArgument(); - return -1; - } string = _PyUnicode_AsStringAndSize(v, &len); - if (len != 1) { + if (string == NULL || len != 1) { PyErr_BadArgument(); return -1; } |