-
-
Notifications
You must be signed in to change notification settings - Fork 33.1k
Closed
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
I found three problematic places:
Lines 2841 to 2844 in a768e12
Struct = PyObject_GetAttrString(structmodule, "Struct"); | |
calcsize = PyObject_GetAttrString(structmodule, "calcsize"); | |
if (Struct == NULL || calcsize == NULL) | |
return NULL; |
Here the first AttributeError
can be swallowed by the second one.
Lines 2850 to 2879 in a768e12
PyModule_AddIntMacro(m, ND_MAX_NDIM); | |
PyModule_AddIntMacro(m, ND_VAREXPORT); | |
PyModule_AddIntMacro(m, ND_WRITABLE); | |
PyModule_AddIntMacro(m, ND_FORTRAN); | |
PyModule_AddIntMacro(m, ND_SCALAR); | |
PyModule_AddIntMacro(m, ND_PIL); | |
PyModule_AddIntMacro(m, ND_GETBUF_FAIL); | |
PyModule_AddIntMacro(m, ND_GETBUF_UNDEFINED); | |
PyModule_AddIntMacro(m, ND_REDIRECT); | |
PyModule_AddIntMacro(m, PyBUF_SIMPLE); | |
PyModule_AddIntMacro(m, PyBUF_WRITABLE); | |
PyModule_AddIntMacro(m, PyBUF_FORMAT); | |
PyModule_AddIntMacro(m, PyBUF_ND); | |
PyModule_AddIntMacro(m, PyBUF_STRIDES); | |
PyModule_AddIntMacro(m, PyBUF_INDIRECT); | |
PyModule_AddIntMacro(m, PyBUF_C_CONTIGUOUS); | |
PyModule_AddIntMacro(m, PyBUF_F_CONTIGUOUS); | |
PyModule_AddIntMacro(m, PyBUF_ANY_CONTIGUOUS); | |
PyModule_AddIntMacro(m, PyBUF_FULL); | |
PyModule_AddIntMacro(m, PyBUF_FULL_RO); | |
PyModule_AddIntMacro(m, PyBUF_RECORDS); | |
PyModule_AddIntMacro(m, PyBUF_RECORDS_RO); | |
PyModule_AddIntMacro(m, PyBUF_STRIDED); | |
PyModule_AddIntMacro(m, PyBUF_STRIDED_RO); | |
PyModule_AddIntMacro(m, PyBUF_CONTIG); | |
PyModule_AddIntMacro(m, PyBUF_CONTIG_RO); | |
PyModule_AddIntMacro(m, PyBUF_READ); | |
PyModule_AddIntMacro(m, PyBUF_WRITE); |
Here PyModule_AddIntMacro
can return an error. It is not checked.
Lines 2829 to 2835 in a768e12
Py_SET_TYPE(&NDArray_Type, &PyType_Type); | |
Py_INCREF(&NDArray_Type); | |
PyModule_AddObject(m, "ndarray", (PyObject *)&NDArray_Type); | |
Py_SET_TYPE(&StaticArray_Type, &PyType_Type); | |
Py_INCREF(&StaticArray_Type); | |
PyModule_AddObject(m, "staticarray", (PyObject *)&StaticArray_Type); |
PyModule_AddObject
can also return an error.
I have a PR ready.
Linked PRs
Metadata
Metadata
Assignees
Labels
extension-modulesC modules in the Modules dirC modules in the Modules dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error