From: Jon Trulson Date: Sat, 27 Dec 2014 22:42:04 +0000 (-0700) Subject: dtsession/SmGlobals: fixup 17 coverity issues. X-Git-Tag: 2.2.3~60^2~13 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=881b0e1ed080d21780f3cb6e6f3b5a124e245491;p=oweals%2Fcde.git dtsession/SmGlobals: fixup 17 coverity issues. --- diff --git a/cde/programs/dtsession/SmGlobals.c b/cde/programs/dtsession/SmGlobals.c index 9b31be08..b7e53879 100644 --- a/cde/programs/dtsession/SmGlobals.c +++ b/cde/programs/dtsession/SmGlobals.c @@ -476,7 +476,7 @@ InitSMGlobals( void ) /* * Pull screen saver resources from Dtsession*. */ - smGD.SmNextension = smGD.SmNextension = smGD.extensionSpec = ""; + smGD.SmNextension = smGD.SmCextension = smGD.extensionSpec = ""; } XtGetSubresources(smGD.topLevelWid, (XtPointer) &smSaverRes, @@ -703,7 +703,7 @@ SetRestorePath( pch = strdup ((char *) GETMESSAGE (40, 15, " No session name was provided for the -session command line option.")); - if (!pch) + if (pch) { DtMsgLogMessage (argv[0], DtMsgLogWarning, pch); free (pch); @@ -1109,22 +1109,26 @@ SetSavePath( if(status == 0) { char * tmpName; - char * tmpDir; - - strcpy (savedOldDir, smGD.etcPath); - - tmpName = (char *) XtMalloc (strlen (smGD.restoreSession) + 2); - sprintf (tmpName, "%s.", smGD.restoreSession); - if (strlen (tmpName) > 5) { - tmpName[4] = '.'; - tmpName[5] = '\000'; - } - tmpDir = (char *) tempnam (smGD.savePath, tmpName); - MoveDirectory (smGD.etcPath, tmpDir, False); - - strcpy (savedTmpDir, tmpDir); - free (tmpDir); - XtFree ((char *) tmpName); + int len, tfd; + + strcpy(savedOldDir, smGD.etcPath); + + len = strlen(smGD.restoreSession) + strlen("XXXXXX") + 2; + tmpName = (char *) XtCalloc(1, len); + + sprintf(tmpName, "%s.XXXXXX", smGD.restoreSession); + if ((tfd = mkstemp(tmpName)) == -1) + { + PrintErrnoError(DtError, smNLS.cantCreateDirsString); + } + else + { + close(tfd); + MoveDirectory(smGD.etcPath, tmpName, False); + + strncpy(savedTmpDir, tmpName, len - 1); + } + XtFree((char *) tmpName); } MoveDirectory(smGD.clientPath, smGD.etcPath, False); } @@ -1165,25 +1169,31 @@ SetSavePath( * save is complete. */ char * tmpName; - char * tmpDir; sprintf(smGD.etcPath, "%s.%s", smGD.clientPath, SM_OLD_EXTENSION); status = stat(smGD.etcPath, &buf); if(status == 0) { - tmpName = (char *) XtMalloc (strlen (smGD.restoreSession) + 2); - sprintf (tmpName, "%s.", smGD.restoreSession); - strcpy (savedOldDir, smGD.etcPath); - if (strlen (tmpName) > 5) { - tmpName[4] = '.'; - tmpName[5] = '\000'; - } - tmpDir = (char *) tempnam (smGD.savePath, tmpName); - MoveDirectory (smGD.etcPath, tmpDir, False); - - strcpy (savedTmpDir, tmpDir); - free (tmpDir); - XtFree ((char *) tmpName); + int len, tfd; + + len = strlen(smGD.restoreSession) + strlen("XXXXXX") + 2; + tmpName = (char *) XtCalloc(1, len); + sprintf(tmpName, "%s.XXXXXX", smGD.restoreSession); + + strcpy (savedOldDir, smGD.etcPath); + + if ((tfd = mkstemp(tmpName)) == -1) + { + PrintErrnoError(DtError, smNLS.cantCreateDirsString); + } + else + { + close(tfd); + MoveDirectory (smGD.etcPath, tmpName, False); + + strcpy (savedTmpDir, tmpName); + } + XtFree((char *) tmpName); } MoveDirectory(smGD.clientPath, smGD.etcPath, False); @@ -1194,13 +1204,21 @@ SetSavePath( status = mkdir(smGD.clientPath, 0000); if(status == -1) { + PrintErrnoError(DtError, smNLS.cantCreateDirsString); + smGD.clientPath[0] = 0; + smGD.settingPath[0] = 0; + smGD.resourcePath[0] = 0; + return(-1); + } + status = chmod(smGD.clientPath, 0755); + if(status == -1) + { PrintErrnoError(DtError, smNLS.cantCreateDirsString); smGD.clientPath[0] = 0; smGD.settingPath[0] = 0; smGD.resourcePath[0] = 0; return(-1); - } - chmod(smGD.clientPath, 0755); + } } strcat(smGD.clientPath, "/"); @@ -1284,7 +1302,13 @@ SetFontSavePath(char *langPtr) smGD.fontPath[0] = 0; return(-1); } - chmod(smGD.fontPath, 0755); + status = chmod(smGD.fontPath, 0755); + if(status == -1) + { + PrintErrnoError(DtError, smNLS.cantCreateDirsString); + smGD.fontPath[0] = 0; + return(-1); + } } return(0); @@ -1632,7 +1656,7 @@ TrimErrorlog( void ) len = strlen(home) + strlen(DtPERSONAL_CONFIG_DIRECTORY) + 2; if (len > MAXPATHLEN) savePath = SM_REALLOC(savePath, len); - sprintf(savePath, "%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY); + snprintf(savePath, len - 1, "%s/%s", home, DtPERSONAL_CONFIG_DIRECTORY); /* * If errorlog.old exists and it is not empty, delete @@ -2352,11 +2376,11 @@ InitializeSpecificSession ( if (len > MAXPATHLEN) alt_dir = XtRealloc(alt_dir, len + 1); - (void) sprintf (alt_dir, "%s/%s/%s/%s", - home, - DtPERSONAL_CONFIG_DIRECTORY, - DtSM_SESSION_DIRECTORY, - SM_HOME_DIRECTORY); + snprintf(alt_dir, len, "%s/%s/%s/%s", + home, + DtPERSONAL_CONFIG_DIRECTORY, + DtSM_SESSION_DIRECTORY, + SM_HOME_DIRECTORY); if (!SetAlternateSession (session_dir, alt_dir, @@ -2412,6 +2436,12 @@ InitializePaths ( char *db_file = (char *) XtMalloc(MAXPATHLEN); struct stat buf; + if (!db_file) + { + PrintError(DtError, smNLS.cantMallocErrorString); + return; + } + smGD.savePath = _DtCreateDtDirs(disp); (void) sprintf (smGD.settingPath, "%s/%s/%s", @@ -2434,7 +2464,7 @@ InitializePaths ( if ((stat(db_file, &buf)) == 0) (void) strcpy (smGD.clientPath, db_file); } - if (db_file) XtFree(db_file); + XtFree(db_file); } @@ -2472,6 +2502,13 @@ SetAlternateSession ( char *db_file2 = (char *) XtMalloc(MAXPATHLEN); struct stat buf; + if (!db_file1 || !db_file2) + { + PrintError(DtError, smNLS.cantMallocErrorString); + return False; + } + + if ((stat (session_dir, &buf)) != 0) { /* * The requested dir does not exist, create it @@ -2560,8 +2597,8 @@ SetAlternateSession ( SetSysDefaults (); } - if (db_file1) XtFree(db_file1); - if (db_file2) XtFree(db_file2); + XtFree(db_file1); + XtFree(db_file2); return (True); }