* keyboard.c (Fopen_dribble_file): Avoid some races.

Fixes: debbugs:17187
This commit is contained in:
Paul Eggert 2014-04-12 14:54:27 -07:00
parent 175a3a5144
commit a9108bf189
2 changed files with 7 additions and 9 deletions

View file

@ -1,3 +1,7 @@
2014-04-12 Paul Eggert <eggert@cs.ucla.edu>
* keyboard.c (Fopen_dribble_file): Avoid some races. (Bug#17187)
2014-04-12 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (move_it_by_lines): If a large portion of buffer text is

View file

@ -10088,15 +10088,9 @@ This may include sensitive information such as passwords. */)
{
int fd;
file = Fexpand_file_name (file, Qnil);
/* 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);
fd = emacs_open (SSDATA (file), O_WRONLY | O_CREAT | O_EXCL, 0600);
if (fd < 0 && errno == EEXIST && unlink (SSDATA (file)) == 0)
fd = emacs_open (SSDATA (file), O_WRONLY | O_CREAT | O_EXCL, 0600);
dribble = fd < 0 ? 0 : fdopen (fd, "w");
if (dribble == 0)
report_file_error ("Opening dribble", file);