[PATCH 1/2] simplify sshkey_load_private by reusing, sshkey_load_private_type with KEY_UNSPEC

Loïc loic at venez.fr
Fri Apr 10 00:06:21 AEST 2020


---
 authfile.c | 29 ++---------------------------
 1 file changed, 2 insertions(+), 27 deletions(-)

diff --git a/authfile.c b/authfile.c
index 50fa48e4a3b6..6867c326d8f0 100644
--- a/authfile.c
+++ b/authfile.c
@@ -161,37 +161,12 @@ sshkey_load_private_type_fd(int fd, int type, const char *passphrase,
     return r;
 }
 
-/* XXX this is almost identical to sshkey_load_private_type() */
+/* This is identical to sshkey_load_private_type() with KEY_UNSPEC as type */
 int
 sshkey_load_private(const char *filename, const char *passphrase,
     struct sshkey **keyp, char **commentp)
 {
-    struct sshbuf *buffer = NULL;
-    int r, fd;
-
-    if (keyp != NULL)
-        *keyp = NULL;
-    if (commentp != NULL)
-        *commentp = NULL;
-
-    if ((fd = open(filename, O_RDONLY)) == -1)
-        return SSH_ERR_SYSTEM_ERROR;
-    if (sshkey_perm_ok(fd, filename) != 0) {
-        r = SSH_ERR_KEY_BAD_PERMISSIONS;
-        goto out;
-    }
-    if ((r = sshbuf_load_fd(fd, &buffer)) != 0 ||
-        (r = sshkey_parse_private_fileblob(buffer, passphrase, keyp,
-        commentp)) != 0)
-        goto out;
-    if (keyp && *keyp &&
-        (r = sshkey_set_filename(*keyp, filename)) != 0)
-        goto out;
-    r = 0;
- out:
-    close(fd);
-    sshbuf_free(buffer);
-    return r;
+    return sshkey_load_private_type(KEY_UNSPEC, filename, passphrase, keyp, commentp);;
 }
 
 /* Load a pubkey from the unencrypted envelope of a new-format private key */
-- 
2.17.1



More information about the openssh-unix-dev mailing list