From bf9b9224d8325d63513efef547857983a6f145e5 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sun, 4 Aug 2013 19:33:57 +0000 Subject: [PATCH] Another couple of memory leaks. [originally from svn r9988] --- sshdss.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sshdss.c b/sshdss.c index eba03aa8..bf6c3ba5 100644 --- a/sshdss.c +++ b/sshdss.c @@ -268,8 +268,13 @@ static int dss_verifysig(void *key, char *sig, int siglen, } r = get160(&sig, &siglen); s = get160(&sig, &siglen); - if (!r || !s) + if (!r || !s) { + if (r) + freebn(r); + if (s) + freebn(s); return 0; + } /* * Step 1. w <- s^-1 mod q. @@ -624,6 +629,7 @@ static unsigned char *dss_sign(void *key, char *data, int datalen, int *siglen) s = modmul(kinv, hxr, dss->q); /* s = k^-1 * (hash + x*r) mod q */ freebn(hxr); freebn(kinv); + freebn(k); freebn(hash); /* -- 2.45.2