efreet: Set umask before creating temp file
authorSebastian Dransfeld <sebastian.dransfeld@sintef.no>
Mon, 14 Oct 2013 11:19:59 +0000 (13:19 +0200)
committerSebastian Dransfeld <sebastian.dransfeld@sintef.no>
Mon, 14 Oct 2013 11:19:59 +0000 (13:19 +0200)
CID 1039616

src/bin/efreet/efreet_desktop_cache_create.c

index 577091f..2fc6e91 100644 (file)
@@ -225,6 +225,7 @@ main(int argc, char **argv)
     int i;
     char file[PATH_MAX] = { '\0' };
     char util_file[PATH_MAX] = { '\0' };
+    mode_t um;
 
     if (!eina_init()) goto eina_error;
     _efreet_desktop_cache_log_dom =
@@ -296,14 +297,20 @@ main(int argc, char **argv)
 
     /* create cache */
     snprintf(file, sizeof(file), "%s.XXXXXX", efreet_desktop_cache_file());
+    /* set secure umask for temporary files */
+    um = umask(0077);
     tmpfd = mkstemp(file);
+    umask(um);
     if (tmpfd < 0) goto error;
     close(tmpfd);
     ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
     if (!ef) goto error;
 
     snprintf(util_file, sizeof(util_file), "%s.XXXXXX", efreet_desktop_util_cache_file());
+    /* set secure umask for temporary files */
+    um = umask(0077);
     tmpfd = mkstemp(util_file);
+    umask(um);
     if (tmpfd < 0) goto error;
     close(tmpfd);
     util_ef = eet_open(util_file, EET_FILE_MODE_READ_WRITE);