]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/keyboard.c (Fopen_dribble_file): Make file private.
authorGlenn Morris <rgm@gnu.org>
Fri, 11 Apr 2014 05:47:32 +0000 (22:47 -0700)
committerGlenn Morris <rgm@gnu.org>
Fri, 11 Apr 2014 05:47:32 +0000 (22:47 -0700)
Fixes: debbugs:17187
src/ChangeLog
src/keyboard.c

index e2c925f03d30c7c8e31e843c17423d1e484d696a..9d59ab1c97c60818d784842cd3136f75a91fcb4b 100644 (file)
@@ -1,3 +1,7 @@
+2014-04-11  Glenn Morris  <rgm@gnu.org>
+
+       * keyboard.c (Fopen_dribble_file): Make file private.  (Bug#17187)
+
 2014-04-09  Ken Brown  <kbrown@cornell.edu>
 
        * Makefile.in (EMACS_MANIFEST): Revert last change.
index 3b50140684e7e84c1293090240ed056f4a9a6b14..f74ba0ee58129cee6dcbc4b6d455cbaa00dbe207 100644 (file)
@@ -20,6 +20,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <config.h>
 
 #include "sysstdio.h"
+#include <sys/stat.h>
 
 #include "lisp.h"
 #include "termchar.h"
@@ -10085,8 +10086,18 @@ This may include sensitive information such as passwords.  */)
     }
   if (!NILP (file))
     {
+      int fd;
       file = Fexpand_file_name (file, Qnil);
-      dribble = emacs_fopen (SSDATA (file), "w");
+      /* This isn't robust, since eg file could be created after we
+         check whether it exists but before emacs_open.
+         Feel free to improve it, but this is not critical.  (Bug#17187)  */
+      if (! NILP (Ffile_exists_p (file)))
+        {
+          if (chmod (SSDATA (file), 0600) < 0)
+            report_file_error ("Doing chmod", file);
+        }
+      fd = emacs_open (SSDATA (file), O_WRONLY | O_CREAT | O_TRUNC, 0600);
+      dribble = fd < 0 ? 0 : fdopen (fd, "w");
       if (dribble == 0)
        report_file_error ("Opening dribble", file);
     }