diff options
author | Matt Johnston <matt@ucc.asn.au> | 2006-06-07 13:41:19 +0000 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2006-06-07 13:41:19 +0000 |
commit | 32af5c267e44c5edb20e02b6de066021e4c58b30 (patch) | |
tree | 0f9c02a91f9820cb4a2fe41ac164231e082fd3f0 /cli-kex.c | |
parent | ba7513fdf365ee505b1ef72972740597d3fbf875 (diff) |
Look at HOME before /etc/passwd when looking for ~/.ssh/known_hosts
file, so people can workaround broken /etc/passwds. Print
the full path in error messages.
--HG--
extra : convert_revision : d777688369ee21011625a3f1fe79ddbe3d5b5c93
Diffstat (limited to 'cli-kex.c')
-rw-r--r-- | cli-kex.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -152,15 +152,14 @@ static void checkhostkey(unsigned char* keyblob, unsigned int keybloblen) { buffer * line = NULL; int ret; - pw = getpwuid(getuid()); + homedir = getenv("HOME"); - if (pw) - homedir = pw->pw_dir; - } - pw = NULL; - - if (!homedir) - homedir = getenv("HOME"); + if (!homedir) { + pw = getpwuid(getuid()); + if (pw) { + homedir = pw->pw_dir; + } + pw = NULL; } if (homedir) { @@ -172,8 +171,8 @@ static void checkhostkey(unsigned char* keyblob, unsigned int keybloblen) { /* Check that ~/.ssh exists - easiest way is just to mkdir */ if (mkdir(filename, S_IRWXU) != 0) { if (errno != EEXIST) { - dropbear_log(LOG_INFO, "Warning: failed creating ~/.ssh: %s", - strerror(errno)); + dropbear_log(LOG_INFO, "Warning: failed creating %s/.ssh: %s", + homedir, strerror(errno)); TRACE(("mkdir didn't work: %s", strerror(errno))) ask_to_confirm(keyblob, keybloblen); goto out; /* only get here on success */ @@ -197,7 +196,8 @@ static void checkhostkey(unsigned char* keyblob, unsigned int keybloblen) { if (hostsfile == NULL) { TRACE(("hostsfile didn't open: %s", strerror(errno))) - dropbear_log(LOG_WARNING, "Failed to open ~/.ssh/known_hosts"); + dropbear_log(LOG_WARNING, "Failed to open %s/.ssh/known_hosts", + homedir); ask_to_confirm(keyblob, keybloblen); goto out; /* We only get here on success */ } |