From 32af5c267e44c5edb20e02b6de066021e4c58b30 Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Wed, 7 Jun 2006 13:41:19 +0000
Subject: [PATCH] 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
---
 cli-kex.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/cli-kex.c b/cli-kex.c
index ea4a2a51..3548f1cb 100644
--- a/cli-kex.c
+++ b/cli-kex.c
@@ -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 */
 	}
-- 
GitLab