From a1cf6be43647502aa9ba9e28efaee453c9ce89e6 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Tue, 17 Apr 2007 03:43:59 +0000
Subject: [PATCH] in get_real_dir_from_tilde(), fix segfault when dealing with
 directory names that begin with "~", but that aren't users' home directories

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4072 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog   | 6 ++++++
 src/files.c | 5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2b834889..5e4dec03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-16  David Lawrence Ramsey  <pooka109@gmail.com>
+
+	* files.c (get_real_dir_from_tilde): Fix segfault when dealing
+	with directory names that begin with "~", but that aren't users'
+	home directories. (DLR, found by Justin Fletcher)
+
 2007-04-11  Mike Frysinger  <vapier@gentoo.org>
 
 	* doc/syntax/asm.nanorc, doc/syntax/c.nanorc,
diff --git a/src/files.c b/src/files.c
index 90060277..68d760e6 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1979,7 +1979,7 @@ char *real_dir_from_tilde(const char *buf)
 
     if (buf[0] == '~') {
 	size_t i;
-	const char *tilde_dir;
+	const char *tilde_dir = NULL;
 
 	/* Figure out how much of the str we need to compare. */
 	for (i = 1; buf[i] != '/' && buf[i] != '\0'; i++)
@@ -1997,7 +1997,8 @@ char *real_dir_from_tilde(const char *buf)
 	    } while (userdata != NULL &&
 		strncmp(userdata->pw_name, buf + 1, i - 1) != 0);
 	    endpwent();
-	    tilde_dir = userdata->pw_dir;
+	    if (userdata != NULL)
+		tilde_dir = userdata->pw_dir;
 	}
 
 	if (tilde_dir != NULL) {
-- 
GitLab