From: Jon Trulson Date: Sun, 27 May 2012 01:29:50 +0000 (-0600) Subject: dtsession: fix VU#497553 X-Git-Tag: 2.2.0a~26^2~31 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9526740dddb7e727093149e6445f23e3de2470cf;p=oweals%2Fcde.git dtsession: fix VU#497553 --- diff --git a/cde/programs/dtsession/SmGlobals.c b/cde/programs/dtsession/SmGlobals.c index bbad7847..2a809ee6 100644 --- a/cde/programs/dtsession/SmGlobals.c +++ b/cde/programs/dtsession/SmGlobals.c @@ -2215,6 +2215,7 @@ InitializeSpecificSession ( { char *session_dir = (char *) XtMalloc(MAXPATHLEN); char *alt_dir = (char *) XtMalloc(MAXPATHLEN); + int len; struct stat buf; if (!InternSessionDir (session_option, disp)) @@ -2283,6 +2284,16 @@ InitializeSpecificSession ( if ((home = getenv ("HOME")) == 0) home = ""; + + /* JET - VU#497553 */ + len = strlen(home) + + strlen(DtPERSONAL_CONFIG_DIRECTORY) + + strlen(DtSM_SESSION_DIRECTORY) + + strlen(SM_HOME_DIRECTORY); + + if (len > MAXPATHLEN) + alt_dir = XtRealloc(alt_dir, len + 1); + (void) sprintf (alt_dir, "%s/%s/%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY, @@ -2325,6 +2336,16 @@ InitializeSpecificSession ( */ if ((home = getenv ("HOME")) == 0) home = ""; + + /* JET - VU#497553 */ + len = strlen(home) + + strlen(DtPERSONAL_CONFIG_DIRECTORY) + + strlen(DtSM_SESSION_DIRECTORY) + + strlen(SM_HOME_DIRECTORY); + + if (len > MAXPATHLEN) + alt_dir = XtRealloc(alt_dir, len + 1); + (void) sprintf (alt_dir, "%s/%s/%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY, diff --git a/cde/programs/dtsession/SmUI.c b/cde/programs/dtsession/SmUI.c index 167ea86b..243996d0 100644 --- a/cde/programs/dtsession/SmUI.c +++ b/cde/programs/dtsession/SmUI.c @@ -2116,6 +2116,7 @@ PostXSMPFailureDialog ( Dimension width, height; Position x, y; XEvent next; + int len; pch1 = strdup ((char *) GETMESSAGE(40, 1, "A session cannot be started because of the\nfollowing error:")); @@ -2171,13 +2172,26 @@ PostXSMPFailureDialog ( error_file = XtMalloc(MAXPATHLEN+1); strcpy (error_file, ""); - if (check_errorlog) { - char *home; - if (home = getenv ("HOME")) - sprintf (error_file, "%s/%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY, - DtERRORLOG_FILE); - } + /* JET - VU#497553 */ + if (check_errorlog) + { + char *home; + + if (home = getenv ("HOME")) + { + len = strlen(home) + + strlen(DtPERSONAL_CONFIG_DIRECTORY) + + strlen(DtERRORLOG_FILE); + + if (len > MAXPATHLEN) + error_file = XtRealloc(error_file, len + 1); + + sprintf (error_file, "%s/%s/%s", home, + DtPERSONAL_CONFIG_DIRECTORY, + DtERRORLOG_FILE); + } + } pch5 = XtMalloc (strlen (pch1) + strlen (pch2) + strlen (pch3) + strlen (pch4) + strlen (error_file) + 15); diff --git a/cde/programs/dtsession/SmXdef.c b/cde/programs/dtsession/SmXdef.c index 09499205..9fbaddb2 100644 --- a/cde/programs/dtsession/SmXdef.c +++ b/cde/programs/dtsession/SmXdef.c @@ -91,13 +91,17 @@ void SmXdefMerge(Display *display) { char *xdefaults; + char *home; /* * Load .Xdefaults */ - if( (xdefaults = (char *)malloc(strlen(getenv("HOME"))+12)) != NULL) + if ((home = getenv("HOME")) == NULL) + home = ""; + + if( (xdefaults = (char *)malloc(strlen(home)+12)) != NULL) { - sprintf(xdefaults,"%s/%s",getenv("HOME"),".Xdefaults"); + sprintf(xdefaults,"%s/%s",home,".Xdefaults"); if(access(xdefaults,R_OK) == 0) { FILE *fp;