]> andersk Git - openssh.git/blobdiff - ssh-dss.c
- markus@cvs.openbsd.org 2002/01/11 13:39:36
[openssh.git] / ssh-dss.c
index 22fffa02afa1c8770991d32e25528a6903a241a7..bd709a22660787da46b5bba0099b5e709da04c44 100644 (file)
--- a/ssh-dss.c
+++ b/ssh-dss.c
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: ssh-dss.c,v 1.8 2001/09/17 19:27:15 stevesk Exp $");
+RCSID("$OpenBSD: ssh-dss.c,v 1.11 2001/12/27 18:22:16 markus Exp $");
 
 #include <openssl/bn.h>
 #include <openssl/evp.h>
@@ -138,17 +138,19 @@ ssh_dss_verify(
                if (strcmp("ssh-dss", ktype) != 0) {
                        error("ssh_dss_verify: cannot handle type %s", ktype);
                        buffer_free(&b);
+                       xfree(ktype);
                        return -1;
                }
+               xfree(ktype);
                sigblob = buffer_get_string(&b, &len);
                rlen = buffer_len(&b);
-               if(rlen != 0) {
-                       error("remaining bytes in signature %d", rlen);
-                       buffer_free(&b);
+               buffer_free(&b);
+               if (rlen != 0) {
+                       error("ssh_dss_verify: "
+                           "remaining bytes in signature %d", rlen);
+                       xfree(sigblob);
                        return -1;
                }
-               buffer_free(&b);
-               xfree(ktype);
        }
 
        if (len != SIGBLOB_LEN) {
@@ -156,9 +158,12 @@ ssh_dss_verify(
        }
 
        /* parse signature */
-       sig = DSA_SIG_new();
-       sig->r = BN_new();
-       sig->s = BN_new();
+       if ((sig = DSA_SIG_new()) == NULL)
+               fatal("ssh_dss_verify: DSA_SIG_new failed");
+       if ((sig->r = BN_new()) == NULL)
+               fatal("ssh_dss_verify: BN_new failed");
+       if ((sig->s = BN_new()) == NULL)
+               fatal("ssh_dss_verify: BN_new failed");
        BN_bin2bn(sigblob, INTBLOB_LEN, sig->r);
        BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s);
 
This page took 0.062338 seconds and 4 git commands to generate.