dtfile: batch coverity fixes
authorPeter Howkins <flibble@users.sf.net>
Sat, 28 Apr 2018 22:12:04 +0000 (23:12 +0100)
committerPeter Howkins <flibble@users.sf.net>
Sat, 28 Apr 2018 22:12:04 +0000 (23:12 +0100)
cde/programs/dtfile/Main.c
cde/programs/dtfile/Trash.c
cde/programs/dtfile/dtcopy/copydialog.c
cde/programs/dtfile/dtcopy/dosync.c
cde/programs/dtfile/dtcopy/dtcopy.h
cde/programs/dtfile/dtcopy/fsrtns.c
cde/programs/dtfile/dtcopy/overwrtdialog.c

index a4cd337347ba7db589dd3b179367c85173e55d40..6a52673599ea524f4f7e6d9786afe29052dca4e9 100644 (file)
@@ -2584,9 +2584,9 @@ SaveSession(
 {
    static char * name_list[] = { DTFILE_CLASS_NAME, NULL, NULL, NULL,
                                  NULL, NULL};
-   char view_number[5];
+   char view_number[11];
    char number[5];
-   char workspaceNumber[5];
+   char workspaceNumber[11];
    int fd;
    Atom * ws_presence = NULL;
    char * workspace_name=NULL;
@@ -2991,8 +2991,8 @@ RestoreSession(
    char * full_path = NULL;
    Boolean status=False;
    char * temp = NULL;
-   char wsNum[5];
-   char dialogNum[5];
+   char wsNum[11];
+   char dialogNum[11];
    int num_sec_help_dialogs;
    int i;
    int j;
@@ -3226,7 +3226,7 @@ LoadViews (
    XrmRepresentation rep_type;
    XrmValue value;
    static char * name_list[] = { DTFILE_CLASS_NAME, NULL, NULL };
-   char view_number[5];
+   char view_number[11];
    DialogData * dialog_data;
    FileMgrData * file_mgr_data;
    char * workspaces;
index 5f0148eb13e504041c0fddc7814090af8f3c91e5..ad792753770d597bfc47152eeb64f618bcb92aa9 100644 (file)
@@ -4168,15 +4168,17 @@ CheckDeletePermission(
     if (FileSysType(statbuf.st_dev) < 0)  /* Root user and nfs */
 #endif
     {
+       int fd = -1;
        char *tmpfile;
        tmpfile = tempnam(parentdir,"dtfile");
        if (!tmpfile)
            return -1;
-       if (creat(tmpfile,O_RDONLY) < 0)  /* Create a temporary file */
+       if ((fd = creat(tmpfile,O_RDONLY)) < 0)  /* Create a temporary file */
        {
            free(tmpfile);
            return -1;
        }
+       close(fd);
        if (remove(tmpfile) < 0)                /* Delete the created file */
        {
            free(tmpfile);
@@ -4232,8 +4234,10 @@ CheckDeletePermissionRecur(
       if (first_file)
       {
         /* check for write permission in this directory */
-        if (CheckAccess(destinationPath, W_OK|X_OK) < 0)
+        if (CheckAccess(destinationPath, W_OK|X_OK) < 0) {
+          closedir(dirp);
           return -1;
+        }
 
         /* append a '/' to the end of directory name */
         fnamep = destinationPath + strlen(destinationPath);
@@ -4307,10 +4311,13 @@ RestoreObject(
     }
     if(stat(target,&stattar) >= 0)  /* Target exists  */
     {
-       if(CheckDeletePermission(localdir,target))
+       if(CheckDeletePermission(localdir,target)) {
+         free(localdir);
          return ((int)False);
-       else
+       } else {
+         free(localdir);
          return SKIP_FILE;
+       }
     }
   }
 
index ae63fb552bc96a94e54ebacdb7ee6e76a2456085..9bf90d6a39ca5767c561ecc3fc41f42a1e06c6ec 100644 (file)
@@ -484,7 +484,7 @@ create_copydir_dialog(
 
   /* Save the name of the source directory in order to truncate the pathname */
   /* displayed as the copy proceeds ... see function UpdateStatus.           */
-  strcpy(G_source_dir,source);
+  snprintf(G_source_dir, sizeof(G_source_dir), "%s", source);
 
   tsource = (char * )get_path(source);
   ttarget = (char * )get_path(target);
index c0868ca172dd013e917d81e8c57dafa4690cd2d0..487fd6e017bc75b81ad975062eca9a3f0a4961bb 100644 (file)
@@ -254,9 +254,9 @@ GetDirEntry(char *fname, FileOp *op, int *rc)
   /* get file name */
   p = strrchr(fname, '/');
   if (p && p > fname)
-    strcpy(deP->name, p + 1);
+    snprintf(deP->name, sizeof(deP->name), "%s", p + 1);
   else
-    strcpy(deP->name, fname);
+    snprintf(deP->name, sizeof(deP->name), "%s", fname);
 
   /* assume everything is fine */
   *op = 0;
@@ -321,7 +321,7 @@ GetDir(char *dirname, PatternList *xl, PatternList *sl, DirEntry **listPP)
   }
 
   /* copy dirname to file name buffer */
-  strcpy(fname, dirname);
+  snprintf(fname, sizeof(fname), "%s", dirname);
   fnP = fname + strlen(fname);
   *fnP++ = '/';
 
@@ -410,8 +410,7 @@ doUnlink(char *fname, DirEntry *fP, int confirm)
   else if (SP->keepold) {
     char newname[1024];
 
-    strcpy(newname, fname);
-    strcat(newname, SP->keepold);
+    snprintf(newname, sizeof(newname), "%s%s", fname, SP->keepold);
     fsMove(fname, newname, 1, &rc);
 
   } else if ((fP->ftype & ft_isdir) && !(fP->ftype & ft_islnk)) {
@@ -941,8 +940,8 @@ SyncDirectory(SyncParams *p)
 
   /* save pointer to params; copy source & target names */
   SP = p;
-  strcpy(sbuf, SP->source);
-  strcpy(tbuf, SP->target);
+  snprintf(sbuf, sizeof(sbuf), "%s", SP->source);
+  snprintf(tbuf, sizeof(tbuf), "%s", SP->target);
 
   /* get info about the source */
   sP = GetDirEntry(sbuf, &op, &rc);
index c3e3b072155e722351bf12916fb233c456ba8fd2..ca644af1a0189b10b41110e92f2672e774bb78bd 100644 (file)
@@ -38,6 +38,8 @@
  ****************************************************************************
  ************************************<+>*************************************/
 
+#include <limits.h>
+
 /* Macros */
 #define MAX_PATH      PATH_MAX
 
@@ -93,8 +95,8 @@ extern Widget G_rename_text;
 extern Widget G_toggle_main;
 extern Widget G_toggle_error;
 
-extern char  G_rename_oldname[];
-extern char  G_source_dir[];
+extern char  G_rename_oldname[MAX_PATH];
+extern char  G_source_dir[MAX_PATH];
 extern int G_move;
 extern int G_do_copy;
 extern int G_pause_copy;
index c666048064cd2994f8a26ec7ba9be4eb87b82350..5e5243a497c3a4396dd9e102947d80db7c5e4e16 100644 (file)
@@ -366,7 +366,7 @@ EmptyDir(char *sourceP, int rm, int force)
     return errno;
 
   /* prepare source name */
-  strcpy(srcname, sourceP);
+  snprintf(srcname, sizeof(srcname), "%s", sourceP);
   srclen = strlen(srcname);
   if (srcname[srclen - 1] != '/')
     srcname[srclen++] = '/';
@@ -486,7 +486,7 @@ fsMove(char *sourceP, char *targetP, int replace, int *rcP)
     /* first check if we have write permission in the source directory */
     char dir[1024], *p;
 
-    strcpy(dir, sourceP);
+    snprintf(dir, sizeof(dir), "%s", sourceP);
     p = strrchr(dir, '/');
     if (p == 0)
       strcpy(dir, ".");
index e4ca1695525a7d455d5a14a7abf742b8ea43b62f..04390dfd7f36a122076241de7e2fd0f873ff49cc 100644 (file)
@@ -278,7 +278,7 @@ create_overwrite_dialog(
 
 
   /* save the target name for possible rename in ok_callback */
-  strcpy(G_rename_oldname,tname);
+  snprintf(G_rename_oldname, sizeof(G_rename_oldname), "%s", tname);
 
 
   if (G_move)