Remove m4/glibc2.m4 (introduced by latest gnulib, but
we don't need it).
* lib/.cvsignore: Add dup-safer.c, fd-safer.c,
fopen-safer.c, stdio-safer.h, unistd-safer.h.
* lib/subpipe.c: Include "unistd-safer.h".
(create_subpipe): Make sure all the newly-created
file descriptors are > 2, so that diagnostics don't
get sent down them (which might cause Bison to hang, in theory).
* m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4.
* src/files.c (xfopen): Use fopen_safer, not fopen.
2005-05-22 Paul Eggert <eggert@cs.ucla.edu>
2005-05-22 Paul Eggert <eggert@cs.ucla.edu>
+ * bootstrap: Add stdio-safer, unistd-safer modules.
+ Remove m4/glibc2.m4 (introduced by latest gnulib, but
+ we don't need it).
+ * lib/.cvsignore: Add dup-safer.c, fd-safer.c,
+ fopen-safer.c, stdio-safer.h, unistd-safer.h.
+ * lib/subpipe.c: Include "unistd-safer.h".
+ (create_subpipe): Make sure all the newly-created
+ file descriptors are > 2, so that diagnostics don't
+ get sent down them (which might cause Bison to hang, in theory).
+ * m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4.
+ * src/files.c (xfopen): Use fopen_safer, not fopen.
+
* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port
yesterday's yacc.c fix.
2005-05-21 Paul Eggert <eggert@cs.ucla.edu>
* data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port
yesterday's yacc.c fix.
2005-05-21 Paul Eggert <eggert@cs.ucla.edu>
+ * data/glr.c, data/lalr1.cc: Update copyright date.
+
Fix a destructor bug reported by Wolfgang Spraul in
<http://lists.gnu.org/archive/html/bug-bison/2005-05/msg00042.html>.
* data/yacc.c (yyabortlab): Don't call destructor, and
Fix a destructor bug reported by Wolfgang Spraul in
<http://lists.gnu.org/archive/html/bug-bison/2005-05/msg00042.html>.
* data/yacc.c (yyabortlab): Don't call destructor, and
xalloc
xalloc-die
xstrndup
xalloc
xalloc-die
xstrndup
intl
m4/codeset.m4
m4/gettext.m4
intl
m4/codeset.m4
m4/gettext.m4
m4/glibc21.m4
m4/intdiv0.m4
m4/intmax.m4
m4/glibc21.m4
m4/intdiv0.m4
m4/intmax.m4
basename.c
dirname.c
dirname.h
basename.c
dirname.c
dirname.h
error.c
error.h
exit.h
exitfail.c
exitfail.h
error.c
error.h
exit.h
exitfail.c
exitfail.h
+fd-safer.c
+fopen-safer.c
getopt.c
getopt.h
getopt1.c
getopt.c
getopt.h
getopt1.c
realloc.c
stdbool.h
stdbool_.h
realloc.c
stdbool.h
stdbool_.h
stpcpy.c
stpcpy.h
strdup.c
stpcpy.c
stpcpy.h
strdup.c
strndup.c
strndup.h
strnlen.c
strndup.c
strndup.h
strnlen.c
unlocked-io.h
xalloc-die.c
xalloc.h
unlocked-io.h
xalloc-die.c
xalloc.h
/* Subprocesses with pipes.
/* Subprocesses with pipes.
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#endif
#include "error.h"
#endif
#include "error.h"
+#include "unistd-safer.h"
#include "gettext.h"
#define _(Msgid) gettext (Msgid)
#include "gettext.h"
#define _(Msgid) gettext (Msgid)
int to_out_fd;
pid_t pid;
int to_out_fd;
pid_t pid;
- if (pipe (pipe_fd) != 0)
+ if (pipe (pipe_fd) != 0
+ || (to_in_fd = fd_safer (pipe_fd[0])) < 0
+ || (to_out_fd = fd_safer (pipe_fd[1])) < 0
+ || pipe (pipe_fd) != 0
+ || (from_in_fd = fd_safer (pipe_fd[0])) < 0
+ || (from_out_fd = fd_safer (pipe_fd[1])) < 0)
error (EXIT_FAILURE, errno, "pipe");
error (EXIT_FAILURE, errno, "pipe");
- to_in_fd = pipe_fd[0];
- to_out_fd = pipe_fd[1];
-
- if (pipe (pipe_fd) != 0)
- error (EXIT_FAILURE, errno, "pipe");
- from_in_fd = pipe_fd[0];
- from_out_fd = pipe_fd[1];
pid = vfork ();
if (pid < 0)
pid = vfork ();
if (pid < 0)
/* Child. */
close (to_out_fd);
close (from_in_fd);
/* Child. */
close (to_out_fd);
close (from_in_fd);
-
- if (to_in_fd != STDIN_FILENO)
- {
- dup2 (to_in_fd, STDIN_FILENO);
- close (to_in_fd);
- }
- if (from_out_fd != STDOUT_FILENO)
- {
- dup2 (from_out_fd, STDOUT_FILENO);
- close (from_out_fd);
- }
+ dup2 (to_in_fd, STDIN_FILENO);
+ close (to_in_fd);
+ dup2 (from_out_fd, STDOUT_FILENO);
+ close (from_out_fd);
/* The cast to (char **) rather than (char * const *) is needed
for portability to older hosts with a nonstandard prototype
for execvp. */
execvp (argv[0], (char **) argv);
/* The cast to (char **) rather than (char * const *) is needed
for portability to older hosts with a nonstandard prototype
for execvp. */
execvp (argv[0], (char **) argv);
_exit (errno == ENOENT ? 127 : 126);
}
_exit (errno == ENOENT ? 127 : 126);
}
quote.m4
quotearg.m4
stdbool.m4
quote.m4
quotearg.m4
stdbool.m4
stpcpy.m4
strdup.m4
strerror_r.m4
strndup.m4
strnlen.m4
stpcpy.m4
strdup.m4
strerror_r.m4
strndup.m4
strnlen.m4
unlocked-io.m4
xalloc.m4
xstrndup.m4
unlocked-io.m4
xalloc.m4
xstrndup.m4
/* Open and close files for Bison.
/* Open and close files for Bison.
- Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004
+ Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
- ptr = fopen (name, mode);
+ ptr = fopen_safer (name, mode);
if (!ptr)
error (EXIT_FAILURE, get_errno (), _("cannot open file `%s'"), name);
if (!ptr)
error (EXIT_FAILURE, get_errno (), _("cannot open file `%s'"), name);