Jacob's last-minute testing found a couple of trivial bugs in
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 11 Feb 2004 13:58:27 +0000 (13:58 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 11 Feb 2004 13:58:27 +0000 (13:58 +0000)
import.c, and my attempts to reproduce them in cmdgen found another
one there :-)

git-svn-id: svn://svn.tartarus.org/sgt/putty@3847 cda61777-01e9-0310-a592-d414129be87e

cmdgen.c
import.c

index 2f0fdc1..a5fccb0 100644 (file)
--- a/cmdgen.c
+++ b/cmdgen.c
@@ -730,7 +730,7 @@ int main(int argc, char **argv)
          case SSH_KEYTYPE_OPENSSH:
          case SSH_KEYTYPE_SSHCOM:
            ssh2key = import_ssh2(&infilename, intype, passphrase);
-           if (ssh2key)
+           if (ssh2key && ssh2key != SSH2_WRONG_PASSPHRASE)
                error = NULL;
            else if (!error) {
                if (ssh2key == SSH2_WRONG_PASSPHRASE)
index c43eca4..d1ab751 100644 (file)
--- a/import.c
+++ b/import.c
@@ -582,6 +582,7 @@ struct ssh2_userkey *openssh_read(const Filename *filename, char *passphrase)
        if (ret < 0 || id != 2 ||
            key->keyblob+key->keyblob_len-p < len) {
            errmsg = "ASN.1 decoding failure";
+           retval = SSH2_WRONG_PASSPHRASE;
            goto error;
        }
 
@@ -1323,7 +1324,7 @@ struct ssh2_userkey *sshcom_read(const Filename *filename, char *passphrase)
      * Strip away the containing string to get to the real meat.
      */
     len = GET_32BIT(ciphertext);
-    if (len > cipherlen-4) {
+    if (len < 0 || len > cipherlen-4) {
         errmsg = "containing string was ill-formed";
         goto error;
     }