diff options
Diffstat (limited to 'SWIG/_dsa.i')
-rw-r--r-- | SWIG/_dsa.i | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/SWIG/_dsa.i b/SWIG/_dsa.i index 4d53506..d01bac5 100644 --- a/SWIG/_dsa.i +++ b/SWIG/_dsa.i @@ -273,10 +273,12 @@ int dsa_verify(DSA *dsa, PyObject *value, PyObject *r, PyObject *s) { } if (!(sig->r = BN_mpi2bn((unsigned char *)rbuf, rlen, NULL))) { PyErr_SetString(_dsa_err, ERR_reason_error_string(ERR_get_error())); + DSA_SIG_free(sig); return -1; } if (!(sig->s = BN_mpi2bn((unsigned char *)sbuf, slen, NULL))) { PyErr_SetString(_dsa_err, ERR_reason_error_string(ERR_get_error())); + DSA_SIG_free(sig); return -1; } ret = DSA_do_verify(vbuf, vlen, sig, dsa); @@ -336,9 +338,11 @@ PyObject *dsa_sign_asn1(DSA *dsa, PyObject *value) { } if (!DSA_sign(0, vbuf, vlen, (unsigned char *)sigbuf, &siglen, dsa)) { PyErr_SetString(_dsa_err, ERR_reason_error_string(ERR_get_error())); + PyMem_Free(sigbuf); return NULL; } ret = PyString_FromStringAndSize(sigbuf, siglen); + PyMem_Free(sigbuf); return ret; } |