From 3a3b1764af9facd762abe6ffc2ebc379186962a1 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Fri, 22 Jan 2016 16:10:36 +0000
Subject: [PATCH] Not using $HOME when we're root, because some sudos don't
 filter it out of the environment (which can lead to a root-owned .nano/
 directory in the invoking user's home directory).  This addresses Ubuntu bug
 #1471459. (See https://bugs.launchpad.net/ubuntu/+source/nano/+bug/1471459.)

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

diff --git a/ChangeLog b/ChangeLog
index ed0dabdf..924be711 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-22  Benno Schulenberg  <bensberg@justemail.net>
+	* src/utils.c (get_homedir): Don't use $HOME when we're root, because
+	some sudos don't filter it out of the environment (which can lead to
+	a root-owned .nano/ directory in the invoking user's home directory).
+	It fixes https://bugs.launchpad.net/ubuntu/+source/nano/+bug/1471459.
+
 2016-01-21  Benno Schulenberg  <bensberg@justemail.net>
 	* src/prompt.c (get_prompt_string): Preserve the cursor position on
 	the statusbar when just toggling a setting or making an excursion to
diff --git a/src/utils.c b/src/utils.c
index 71099f3f..6bd8b571 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -37,7 +37,9 @@ void get_homedir(void)
     if (homedir == NULL) {
 	const char *homenv = getenv("HOME");
 
-	if (homenv == NULL) {
+	/* When HOME isn't set, or when we're root, get the home directory
+	 * from the password file instead. */
+	if (homenv == NULL || geteuid() == 0) {
 	    const struct passwd *userage = getpwuid(geteuid());
 
 	    if (userage != NULL)