From 3a3b1764af9facd762abe6ffc2ebc379186962a1 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg 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 + * 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 * 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) -- 2.39.5