mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Fixes Issue #3745: Fix hashlib to always reject unicode and non
buffer-api supporting objects as input no matter how it was compiled (built in implementations or external openssl library).
This commit is contained in:
parent
3072921d0e
commit
365a1864fd
8 changed files with 133 additions and 68 deletions
28
Modules/hashlib.h
Normal file
28
Modules/hashlib.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/* Common code for use by all hashlib related modules. */
|
||||
|
||||
/*
|
||||
* Given a PyObject* obj, fill in the Py_buffer* viewp with the result
|
||||
* of PyObject_GetBuffer. Sets and exception and issues a return NULL
|
||||
* on any errors.
|
||||
*/
|
||||
#define GET_BUFFER_VIEW_OR_ERROUT(obj, viewp) do { \
|
||||
if (PyUnicode_Check((obj))) { \
|
||||
PyErr_SetString(PyExc_TypeError, \
|
||||
"Unicode-objects must be encoded before hashing");\
|
||||
return NULL; \
|
||||
} \
|
||||
if (!PyObject_CheckBuffer((obj))) { \
|
||||
PyErr_SetString(PyExc_TypeError, \
|
||||
"object supporting the buffer API required"); \
|
||||
return NULL; \
|
||||
} \
|
||||
if (PyObject_GetBuffer((obj), (viewp), PyBUF_SIMPLE) == -1) { \
|
||||
return NULL; \
|
||||
} \
|
||||
if ((viewp)->ndim > 1) { \
|
||||
PyErr_SetString(PyExc_BufferError, \
|
||||
"Buffer must be single dimension"); \
|
||||
PyBuffer_Release((viewp)); \
|
||||
return NULL; \
|
||||
} \
|
||||
} while(0);
|
||||
Loading…
Add table
Add a link
Reference in a new issue