From: Jon Trulson Date: Sun, 28 Dec 2014 02:01:30 +0000 (-0700) Subject: dtsession/SmRestore: redo defaultCwd detection in StartClient() to be safer X-Git-Tag: 2.2.3~60^2~5 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7c702bff6e031530ca572be4202fc08acdb0eb70;p=oweals%2Fcde.git dtsession/SmRestore: redo defaultCwd detection in StartClient() to be safer --- diff --git a/cde/programs/dtsession/SmRestore.c b/cde/programs/dtsession/SmRestore.c index 1f556b46..53835c25 100644 --- a/cde/programs/dtsession/SmRestore.c +++ b/cde/programs/dtsession/SmRestore.c @@ -58,6 +58,7 @@ #include #include #include +#include #ifdef _SUN_OS /* to get the define for NOFILE */ #include #endif /* _SUN_OS */ @@ -3503,14 +3504,20 @@ StartClient( smRes.ignoreEnvironment, ','); } - if (!defaultCwd) { - if (getenv ("HOME")) - defaultCwd = strndup (getenv("HOME"), MAXPATHLEN); - else - defaultCwd = getcwd (NULL, MAXPATHLEN + 1); - - (void) gethostname (localHost, MAXHOSTNAMELEN); - } + if (!defaultCwd) + { + char *tstr = getenv("HOME"); + if (tstr) + { + int slen = strlen(tstr) + 1; + defaultCwd = XtCalloc(1, slen); + strncpy(defaultCwd, tstr, slen - 1); + } + else + defaultCwd = getcwd (NULL, MAXPATHLEN + 1); + + (void) gethostname (localHost, MAXHOSTNAMELEN); + } if (!cwd) { cwdNull = True;