From: Jim Warner Date: Fri, 13 Jan 2012 22:07:40 +0000 (-0600) Subject: top: properly handle an improper $HOME environment variable X-Git-Tag: v3.3.3~96 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9573a6fe5b945ae4acd126cb8f285ee3434c2296;p=procps-ng top: properly handle an improper $HOME environment variable Since its inception, this top has improperly handled an empty HOME environment variable. Under those conditions a path to the root directory would have been constructed. That caused no real harm upon startup since the display defaults would have been employed. However, except for root, it would have been impossible to save the rc file. This commit keeps the promise made in the documentation. --- diff --git a/top/top.c b/top/top.c index ae059657..856d8560 100644 --- a/top/top.c +++ b/top/top.c @@ -2148,13 +2148,13 @@ static void configs_read (void) { RCF_t rcdef = DEF_RCFILE; #endif float tmp_delay = DEF_DELAY; - char fbuf[LRGBUFSIZ]; + char fbuf[LRGBUFSIZ], *p; FILE *fp; int i, x; char id; - if (!getenv("HOME")) snprintf(Rc_name, sizeof(Rc_name), ".%src", Myname); - else snprintf(Rc_name, sizeof(Rc_name), "%s/.%src", getenv("HOME"), Myname); + p = getenv("HOME"); + snprintf(Rc_name, sizeof(Rc_name), "%s/.%src", (p && *p) ? p : ".", Myname); fp = fopen(SYS_RCFILESPEC, "r"); if (fp) {