=== modified file 'src/tools.cc'
--- src/tools.cc	2012-11-29 08:51:27 +0000
+++ src/tools.cc	2013-01-23 15:20:26 +0000
@@ -130,28 +130,25 @@
 {
     FILE *fp = NULL;
     static char command[256];
+
+    const mode_t prev_umask=umask(S_IRWXU);
+
 #if HAVE_MKSTEMP
-
     char filename[] = "/tmp/squid-XXXXXX";
     int tfd = mkstemp(filename);
-
-    if (tfd < 0)
-        return;
-
-    if ((fp = fdopen(tfd, "w")) == NULL)
-        return;
-
+    if (tfd < 0 || (fp = fdopen(tfd, "w")) == NULL) {
+        umask(prev_umask);
+        return;
+    }
 #else
-
     char *filename;
-
-    if ((filename = tempnam(NULL, APP_SHORTNAME)) == NULL)
-        return;
-
-    if ((fp = fopen(filename, "w")) == NULL)
-        return;
-
+    if ((filename = tempnam(NULL, APP_SHORTNAME)) == NULL ||
+        (fp = fopen(filename, "w")) == NULL) {
+        umask(prev_umask);
+        return;
+    }
 #endif
+    umask(prev_umask);
 
     if (Config.EmailFrom)
         fprintf(fp, "From: %s\n", Config.EmailFrom);
@@ -159,15 +156,11 @@
         fprintf(fp, "From: %s@%s\n", APP_SHORTNAME, uniqueHostname());
 
     fprintf(fp, "To: %s\n", Config.adminEmail);
-
     fprintf(fp, "Subject: %s\n", dead_msg());
-
     fclose(fp);
 
     snprintf(command, 256, "%s %s < %s", Config.EmailProgram, Config.adminEmail, filename);
-
     if (system(command)) {}		/* XXX should avoid system(3) */
-
     unlink(filename);
 }
 

