浏览代码

add safety in make rules involving rm -rf

error out if there are any slashes in the name that will later be
passed to rm -rf since these are implicit rules and could
theoretically get instantiated in unintended ways.
Rich Felker 5 年之前
父节点
当前提交
de5dc219d8
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      Makefile

+ 4 - 0
Makefile

@@ -100,6 +100,7 @@ musl-git-%:
 	mv $@.tmp $@
 	mv $@.tmp $@
 
 
 %.orig: $(SOURCES)/%.tar.gz
 %.orig: $(SOURCES)/%.tar.gz
+	case "$@" in */*) exit 1 ;; esac
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 	mkdir $@.tmp
 	mkdir $@.tmp
 	( cd $@.tmp && tar zxvf - ) < $<
 	( cd $@.tmp && tar zxvf - ) < $<
@@ -109,6 +110,7 @@ musl-git-%:
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 
 
 %.orig: $(SOURCES)/%.tar.bz2
 %.orig: $(SOURCES)/%.tar.bz2
+	case "$@" in */*) exit 1 ;; esac
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 	mkdir $@.tmp
 	mkdir $@.tmp
 	( cd $@.tmp && tar jxvf - ) < $<
 	( cd $@.tmp && tar jxvf - ) < $<
@@ -118,6 +120,7 @@ musl-git-%:
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 
 
 %.orig: $(SOURCES)/%.tar.xz
 %.orig: $(SOURCES)/%.tar.xz
+	case "$@" in */*) exit 1 ;; esac
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 	mkdir $@.tmp
 	mkdir $@.tmp
 	( cd $@.tmp && tar Jxvf - ) < $<
 	( cd $@.tmp && tar Jxvf - ) < $<
@@ -127,6 +130,7 @@ musl-git-%:
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 
 
 %: %.orig | $(SOURCES)/config.sub
 %: %.orig | $(SOURCES)/config.sub
+	case "$@" in */*) exit 1 ;; esac
 	rm -rf $@.tmp
 	rm -rf $@.tmp
 	mkdir $@.tmp
 	mkdir $@.tmp
 	( cd $@.tmp && find ../$< -path '*/*/*' -prune -exec sh -c 'ln -s "$$@" .' ':' {} + )
 	( cd $@.tmp && find ../$< -path '*/*/*' -prune -exec sh -c 'ln -s "$$@" .' ':' {} + )