build: consistently use freopen-safer
authorEric Blake <ebb9@byu.net>
Thu, 5 Nov 2009 23:48:09 +0000 (16:48 -0700)
committerEric Blake <ebb9@byu.net>
Sat, 7 Nov 2009 17:10:28 +0000 (10:10 -0700)
cat, head, ptx, shuf, tac, tail, tee, tr, and uniq used freopen
on stdout, and were potentially vulnerable.  dircolors, du, and
tsort only used it on stdin, which is unaffected by freopen_safer,
but this covers all uses for consistency.

* cfg.mk (sc_require_stdio_safer): New rule.
* gl/modules/xfreopen (Depends-on): Add freopen-safer.
* gl/lib/xfreopen.c (includes): Use stdio--.h.
* src/ptx.c (includes): Likewise.
* src/shuf.c (includes): Likewise.
* src/uniq.c (includes): Likewise.
* src/dircolors.c (includes): Likewise.
* src/du.c (includes): Likewise.
* src/tsort.c (includes): Likewise.

cfg.mk
gl/lib/xfreopen.c
gl/modules/xfreopen
src/dircolors.c
src/du.c
src/ptx.c
src/shuf.c
src/tsort.c
src/uniq.c

diff --git a/cfg.mk b/cfg.mk
index 27349d0..03c3fce 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -237,4 +237,16 @@ sc_prohibit_fail_0:
        msg='fail=0 initialization'                                     \
          $(_prohibit_regexp)
 
+# Ensure that "stdio--.h" is used where appropriate.
+sc_require_stdio_safer:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.[ch]$$' > /dev/null; then    \
+         files=$$(grep -l '\bfreopen \?(' $$($(VC_LIST_EXCEPT)         \
+             | grep '\.[ch]$$'));                                      \
+         test -n "$$files" && grep -LE 'include "stdio--.h"' $$files   \
+             | grep . &&                                               \
+         { echo '$(ME): the above files should use "stdio--.h"'        \
+               1>&2; exit 1; } || :;                                   \
+       else :;                                                         \
+       fi
+
 include $(srcdir)/dist-check.mk
index 6109169..32e68fa 100644 (file)
@@ -21,6 +21,7 @@
 #include "error.h"
 #include "exitfail.h"
 #include "quote.h"
+#include "stdio--.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
index 411f80b..ed4ede7 100644 (file)
@@ -8,6 +8,7 @@ lib/xfreopen.h
 Depends-on:
 error
 exitfail
+freopen-safer
 quote
 
 configure.ac:
index f28487e..54139ba 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <sys/types.h>
 #include <getopt.h>
-#include <stdio.h>
 
 #include "system.h"
 #include "dircolors.h"
@@ -27,6 +26,7 @@
 #include "error.h"
 #include "obstack.h"
 #include "quote.h"
+#include "stdio--.h"
 #include "xstrndup.h"
 
 /* The official name of this program (e.g., no `g' prefix).  */
index bee006d..61a9c43 100644 (file)
--- a/src/du.c
+++ b/src/du.c
@@ -24,7 +24,6 @@
    Rewritten to use nftw, then to use fts by Jim Meyering.  */
 
 #include <config.h>
-#include <stdio.h>
 #include <getopt.h>
 #include <sys/types.h>
 #include <assert.h>
@@ -40,6 +39,7 @@
 #include "quotearg.h"
 #include "same.h"
 #include "stat-time.h"
+#include "stdio--.h"
 #include "xfts.h"
 #include "xstrtol.h"
 
index 4947a0f..701fcb3 100644 (file)
--- a/src/ptx.c
+++ b/src/ptx.c
@@ -19,7 +19,6 @@
 
 #include <config.h>
 
-#include <stdio.h>
 #include <getopt.h>
 #include <sys/types.h>
 #include "system.h"
@@ -29,6 +28,7 @@
 #include "quote.h"
 #include "quotearg.h"
 #include "regex.h"
+#include "stdio--.h"
 #include "xstrtol.h"
 
 /* The official name of this program (e.g., no `g' prefix).  */
index 0bb11ab..71411a4 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <config.h>
 
-#include <stdio.h>
 #include <sys/types.h>
 #include "system.h"
 
@@ -29,6 +28,7 @@
 #include "quotearg.h"
 #include "randint.h"
 #include "randperm.h"
+#include "stdio--.h"
 #include "xstrtol.h"
 
 /* The official name of this program (e.g., no `g' prefix).  */
index 09067f2..cc6807a 100644 (file)
@@ -22,7 +22,6 @@
 
 #include <config.h>
 
-#include <stdio.h>
 #include <assert.h>
 #include <getopt.h>
 #include <sys/types.h>
@@ -32,6 +31,7 @@
 #include "error.h"
 #include "quote.h"
 #include "readtokens.h"
+#include "stdio--.h"
 
 /* The official name of this program (e.g., no `g' prefix).  */
 #define PROGRAM_NAME "tsort"
index 7509bfc..ac7ecac 100644 (file)
@@ -18,7 +18,6 @@
 \f
 #include <config.h>
 
-#include <stdio.h>
 #include <getopt.h>
 #include <sys/types.h>
 
@@ -29,6 +28,7 @@
 #include "hard-locale.h"
 #include "posixver.h"
 #include "quote.h"
+#include "stdio--.h"
 #include "xmemcoll.h"
 #include "xstrtol.h"
 #include "memcasecmp.h"