summaryrefslogtreecommitdiff
path: root/SWIG/_dsa.i
diff options
context:
space:
mode:
Diffstat (limited to 'SWIG/_dsa.i')
-rw-r--r--SWIG/_dsa.i4
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;
}