1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-02-15 04:32:24 +00:00

dtsession/SmSave: get rid of use of tempnam (CID 89359)

This commit is contained in:
Jon Trulson 2014-12-27 19:33:03 -07:00
parent 7c702bff6e
commit e02c703af7

View file

@ -504,29 +504,36 @@ PruneSessionDirectory ()
*/
char * tmpName;
char * tmp;
int len, tfd;
tmpName = (char *) XtMalloc (strlen (smGD.restoreSession) + 2);
sprintf (tmpName, "%s.", smGD.restoreSession);
if (strlen (tmpName) > 5) {
tmpName[4] = '.';
tmpName[5] = '\000';
}
tmp = (char *) tempnam (smGD.savePath, tmpName);
len = strlen(smGD.savePath) + strlen(smGD.restoreSession)
+ strlen("XXXXXX") + 3;
tmpName = XtCalloc (1, len);
sprintf(tmpName, "%s/%s.XXXXXX", smGD.savePath,
smGD.restoreSession);
sprintf (saveDir, "%s/%s", smGD.savePath, smGD.restoreSession);
if ((tfd = mkstemp(tmpName)) == -1)
{
PrintErrnoError(DtError, smNLS.cantCreateDirsString);
}
else
{
close(tfd);
unlink(tmpName);
MoveDirectory (saveDir, tmp, False);
MoveDirectory (oldestDir, saveDir, False);
sprintf (saveDir, "%s/%s",
smGD.savePath, smGD.restoreSession);
sprintf (clientDB, "%s/%s/%s", smGD.savePath,
smGD.restoreSession, SM_CLIENT_FILE2);
MoveDirectory (saveDir, tmpName, False);
MoveDirectory (oldestDir, saveDir, False);
ExecuteDiscardCommands (clientDB);
sprintf (clientDB, "%s/%s/%s", smGD.savePath,
smGD.restoreSession, SM_CLIENT_FILE2);
MoveDirectory (tmp, saveDir, True);
ExecuteDiscardCommands (clientDB);
free (tmp);
MoveDirectory (tmpName, saveDir, True);
}
XtFree (tmpName);
}