]> andersk Git - openssh.git/blobdiff - ssh-dss.c
- markus@cvs.openbsd.org 2002/01/11 13:39:36
[openssh.git] / ssh-dss.c
index 5cf0076672bc832fc243b2c584d81919e0a84844..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.7 2001/06/06 23:13:54 markus 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>
@@ -133,22 +133,24 @@ ssh_dss_verify(
                /* ietf-drafts */
                char *ktype;
                buffer_init(&b);
-               buffer_append(&b, (char *) signature, signaturelen);
+               buffer_append(&b, signature, signaturelen);
                ktype = buffer_get_string(&b, NULL);
                if (strcmp("ssh-dss", ktype) != 0) {
                        error("ssh_dss_verify: cannot handle type %s", ktype);
                        buffer_free(&b);
+                       xfree(ktype);
                        return -1;
                }
-               sigblob = (u_char *)buffer_get_string(&b, &len);
+               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.138732 seconds and 4 git commands to generate.