Switch to some more PyTuple APIs for simpler error handling
diff --git a/src/crypto/pkcs12.c b/src/crypto/pkcs12.c
index 66dbf63..f216349 100644
--- a/src/crypto/pkcs12.c
+++ b/src/crypto/pkcs12.c
@@ -147,14 +147,16 @@
return NULL;
if (cacerts == Py_None) {
Py_INCREF(cacerts);
- } else if ((len = PySequence_Length(cacerts)) >= 0) { /* is iterable */
+ } else {
+ /* It's iterable */
cacerts = PySequence_Tuple(cacerts);
- if(cacerts == NULL) {
- PyErr_SetString(PyExc_TypeError, "untupleable" /* failed to convert cacerts to a tuple */);
+ if (cacerts == NULL) {
return NULL;
}
+ len = PyTuple_Size(cacerts);
+
/* Check is's a simple list filled only with X509 objects. */
- for(i = 0; i < len; i++) { /* For each CA cert */
+ for (i = 0; i < len; i++) {
obj = PyTuple_GetItem(cacerts, i);
if (PyObject_Type(obj) != (PyObject *) &crypto_X509_Type) {
Py_DECREF(cacerts);
@@ -162,9 +164,6 @@
return NULL;
}
}
- } else {
- PyErr_SetString(PyExc_TypeError, "must be iterable or None");
- return NULL;
}
Py_DECREF(self->cacerts);