Convert crypto_PKCS12Obj->cacerts to a tuple as Jean-Paul pointed out.
diff --git a/src/crypto/pkcs12.c b/src/crypto/pkcs12.c
index 5ef699d..963d29c 100644
--- a/src/crypto/pkcs12.c
+++ b/src/crypto/pkcs12.c
@@ -147,6 +147,7 @@
if (cacerts == Py_None) {
/* We are good. */
} else if (PySequence_Check(cacerts)) { /* is iterable */
+ /* Check is's a simple list filled only with X509 objects. */
for(i = 0;i < PySequence_Length(cacerts);i++) { /* For each CA cert */
PyObject *obj;
obj = PySequence_GetItem(cacerts, i);
@@ -157,6 +158,11 @@
}
Py_DECREF(obj);
}
+ cacerts = PySequence_Tuple(cacerts);
+ if(cacerts == NULL) {
+ PyErr_SetString(PyExc_TypeError, "" /* "failed to convert cacerts to a tuple" */);
+ return NULL;
+ }
} else {
PyErr_SetString(PyExc_TypeError, "cacerts must be an iterable or None");
return NULL;