X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/28ad39e0d044535e6acd7e61c73723f5ab165b07..eecca84d87d0b378a6a0af7f7651d0b9dc1514e9:/sshpubk.c diff --git a/sshpubk.c b/sshpubk.c index 78a35ee7..f87a0814 100644 --- a/sshpubk.c +++ b/sshpubk.c @@ -182,6 +182,9 @@ int loadrsakey(const Filename *filename, struct RSAKey *key, char *passphrase, * key file. */ if (fgets(buf, sizeof(buf), fp) && !strcmp(buf, rsa_signature)) { + /* + * This routine will take care of calling fclose() for us. + */ ret = loadrsakey_main(fp, key, FALSE, NULL, passphrase, &error); goto end; } @@ -189,10 +192,10 @@ int loadrsakey(const Filename *filename, struct RSAKey *key, char *passphrase, /* * Otherwise, we have nothing. Return empty-handed. */ - fclose(fp); error = "not an SSH-1 RSA file"; end: + fclose(fp); if ((ret != 1) && errorstr) *errorstr = error; return ret; @@ -217,6 +220,9 @@ int rsakey_encrypted(const Filename *filename, char **comment) */ if (fgets(buf, sizeof(buf), fp) && !strcmp(buf, rsa_signature)) { const char *dummy; + /* + * This routine will take care of calling fclose() for us. + */ return loadrsakey_main(fp, NULL, FALSE, comment, NULL, &dummy); } fclose(fp); @@ -261,10 +267,11 @@ int rsakey_pubblob(const Filename *filename, void **blob, int *bloblen, } } else { error = "not an SSH-1 RSA file"; - fclose(fp); } end: + if (fp) + fclose(fp); if ((ret != 1) && errorstr) *errorstr = error; return ret; @@ -835,7 +842,8 @@ struct ssh2_userkey *ssh2_load_userkey(const Filename *filename, sfree(public_blob); sfree(private_blob); sfree(encryption); - *errorstr = NULL; + if (errorstr) + *errorstr = NULL; return ret; /*