250 static PyObject *
251 crypto_load_certificate(PyObject *spam, PyObject *args)
252 {
253 crypto_X509Obj *crypto_X509_New(X509 *, int);
254 int type, len;
255 char *buffer;
256 BIO *bio;
257 X509 *cert;
258
259 if (!PyArg_ParseTuple(args, "is#:load_certificate", &type, &buffer, &len))
when PyArg_ParseTuple() succeeds
taking False path
260 return NULL;
261
262 bio = BIO_new_mem_buf(buffer, len);
263 switch (type)
when following case 1
264 {
265 case X509_FILETYPE_PEM:
266 cert = PEM_read_bio_X509(bio, NULL, NULL, NULL);
267 break;
268
269 case X509_FILETYPE_ASN1:
270 cert = d2i_X509_bio(bio, NULL);
271 break;
272
273 default:
274 PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM or FILETYPE_ASN1");
275 BIO_free(bio);
276 return NULL;
277 }
278 BIO_free(bio);
279
280 if (cert == NULL)
when treating unknown struct X509 * from OpenSSL/crypto/crypto.c:266 as NULL
taking True path
281 {
282 exception_from_error_queue(crypto_Error);
283 return NULL;
284 }
285
286 return (PyObject *)crypto_X509_New(cert, 1);
287 }
returning (PyObject*)NULL without setting an exception
found 1 similar trace(s) to this