From 1d81d5e3944dd5ac912150bc705fa7259eade541 Mon Sep 17 00:00:00 2001 From: Luciano Rocha Date: Wed, 23 May 2007 21:50:16 +0100 Subject: [PATCH] Don't clobber /dev/null when compiling as root Compiling as root is highly discouraged, but some people do it anyway. gcc_ok, however, can clobber /dev/null due to "-o /dev/null"; this is bad. Instead, write a temporary file and delete it. --- Makefile | 6 ++++-- com32/lib/MCONFIG | 6 ++++-- com32/libutil/Makefile | 6 ++++-- com32/modules/Makefile | 6 ++++-- com32/samples/Makefile | 6 ++++-- dos/Makefile | 6 ++++-- extlinux/Makefile | 6 ++++-- mbr/Makefile | 6 ++++-- memdisk/Makefile | 6 ++++-- menu/Makefile | 6 ++++-- mtools/Makefile | 6 ++++-- sample/Makefile | 6 ++++-- unix/Makefile | 6 ++++-- 13 files changed, 52 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index 5a27526..2445035 100644 --- a/Makefile +++ b/Makefile @@ -17,8 +17,10 @@ # No builtin rules MAKEFLAGS = -r -gcc_ok = $(shell if gcc $(1) dummy.c -o /dev/null 2>/dev/null; \ - then echo '$(1)'; else echo '$(2)'; fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) dummy.c -o $$tmpf 2>/dev/null; \ + then echo '$(1)'; else echo '$(2)'; fi; rm -f $$tmpf) comma := , LDHASH := $(call gcc_ok,-Wl$(comma)--hash-style=both,) diff --git a/com32/lib/MCONFIG b/com32/lib/MCONFIG index 461ada4..781292b 100644 --- a/com32/lib/MCONFIG +++ b/com32/lib/MCONFIG @@ -1,7 +1,9 @@ # -*- makefile -*- -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) GCCOPT := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,) diff --git a/com32/libutil/Makefile b/com32/libutil/Makefile index 1dac1f7..1539353 100644 --- a/com32/libutil/Makefile +++ b/com32/libutil/Makefile @@ -29,8 +29,10 @@ ## Utility companion library for the COM32 library ## -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,) diff --git a/com32/modules/Makefile b/com32/modules/Makefile index bef45a8..9be0b85 100644 --- a/com32/modules/Makefile +++ b/com32/modules/Makefile @@ -14,8 +14,10 @@ ## samples for syslinux users ## -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,) diff --git a/com32/samples/Makefile b/com32/samples/Makefile index b694a48..b2544e6 100644 --- a/com32/samples/Makefile +++ b/com32/samples/Makefile @@ -14,8 +14,10 @@ ## samples for syslinux users ## -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,) diff --git a/dos/Makefile b/dos/Makefile index 5fd52d1..53406b1 100644 --- a/dos/Makefile +++ b/dos/Makefile @@ -1,5 +1,7 @@ -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-ffreestanding,) $(call gcc_ok,-fno-stack-protector,) diff --git a/extlinux/Makefile b/extlinux/Makefile index 8d347a9..d2ea6f9 100644 --- a/extlinux/Makefile +++ b/extlinux/Makefile @@ -1,5 +1,7 @@ -gcc_ok = $(shell if gcc $(1) ../dummy.c -o /dev/null 2>/dev/null; \ - then echo '$(1)'; else echo '$(2)'; fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) ../dummy.c -o $$tmpf 2>/dev/null; \ + then echo '$(1)'; else echo '$(2)'; fi; rm -f $$tmpf) comma := , LDHASH := $(call gcc_ok,-Wl$(comma)--hash-style=both,) diff --git a/mbr/Makefile b/mbr/Makefile index 7662a0a..8774413 100644 --- a/mbr/Makefile +++ b/mbr/Makefile @@ -14,8 +14,10 @@ # Makefile for MBR # -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-ffreestanding,) $(call gcc_ok,-fno-stack-protector) diff --git a/memdisk/Makefile b/memdisk/Makefile index 72234ca..161a163 100644 --- a/memdisk/Makefile +++ b/memdisk/Makefile @@ -12,8 +12,10 @@ VERSION := $(shell cat ../version) -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) ALIGN := $(call gcc_ok,-falign-functions=0 -falign-jumps=0 -falign-loops=0,-malign-functions=0 -malign-jumps=0 -malign-loops=0) diff --git a/menu/Makefile b/menu/Makefile index cee1c3a..702f456 100644 --- a/menu/Makefile +++ b/menu/Makefile @@ -14,8 +14,10 @@ ## samples for syslinux users ## -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,) diff --git a/mtools/Makefile b/mtools/Makefile index 546e3d1..16d63a6 100644 --- a/mtools/Makefile +++ b/mtools/Makefile @@ -1,5 +1,7 @@ -gcc_ok = $(shell if gcc $(1) ../dummy.c -o /dev/null 2>/dev/null; \ - then echo '$(1)'; else echo '$(2)'; fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) ../dummy.c -o $$tmpf 2>/dev/null; \ + then echo '$(1)'; else echo '$(2)'; fi; rm -f $$tmpf) comma := , LDHASH := $(call gcc_ok,-Wl$(comma)--hash-style=both,) diff --git a/sample/Makefile b/sample/Makefile index f301b9f..cc22a98 100644 --- a/sample/Makefile +++ b/sample/Makefile @@ -14,8 +14,10 @@ ## samples for syslinux users ## -gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \ - then echo $(1); else echo $(2); fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \ + then echo $(1); else echo $(2); fi; rm -f $$tmpf) M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-ffreestanding,) $(call gcc_ok,-fno-stack-protector,) diff --git a/unix/Makefile b/unix/Makefile index f0ab279..b046529 100644 --- a/unix/Makefile +++ b/unix/Makefile @@ -1,5 +1,7 @@ -gcc_ok = $(shell if gcc $(1) ../dummy.c -o /dev/null 2>/dev/null; \ - then echo '$(1)'; else echo '$(2)'; fi) +TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX) + +gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) ../dummy.c -o $$tmpf 2>/dev/null; \ + then echo '$(1)'; else echo '$(2)'; fi; rm -f $$tmpf) comma := , LDHASH := $(call gcc_ok,-Wl$(comma)--hash-style=both,) -- 2.7.4