X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshdss.c;h=bf6c3ba5045c33b43840c47bf79aa964da04a2fb;hb=bf9b9224d8325d63513efef547857983a6f145e5;hp=eba03aa877f7c7f334ad5e12e5df198041d2ab1a;hpb=5bcb8d6aac70ea3f8761e384de7b49cf4711b2df;p=PuTTY.git 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); /*