Makefile: fix shell quoting
Makefile records paths to a few programs in GIT-BUILD-OPTIONS file. These paths need to be quoted twice: once to protect specials from the shell that runs the generated GIT-BUILD-OPTIONS file, and again to protect them (and the first level of quoting itself) from the shell that runs the "echo" inside the Makefile. You can test this by trying: $ ln -s /bin/tar "$HOME/Tes' program/tar" $ make TAR="$HOME/Tes' program/tar" test Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c30e699fc5
commit
bfce5087ee
7
Makefile
7
Makefile
@ -1210,9 +1210,12 @@ GIT-CFLAGS: .FORCE-GIT-CFLAGS
|
|||||||
echo "$$FLAGS" >GIT-CFLAGS; \
|
echo "$$FLAGS" >GIT-CFLAGS; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# We need to apply sq twice, once to protect from the shell
|
||||||
|
# that runs GIT-BUILD-OPTIONS, and then again to protect it
|
||||||
|
# and the first level quoting from the shell that runs "echo".
|
||||||
GIT-BUILD-OPTIONS: .FORCE-GIT-BUILD-OPTIONS
|
GIT-BUILD-OPTIONS: .FORCE-GIT-BUILD-OPTIONS
|
||||||
@echo SHELL_PATH=\''$(SHELL_PATH_SQ)'\' >$@
|
@echo SHELL_PATH=\''$(subst ','\'',$(SHELL_PATH_SQ))'\' >$@
|
||||||
@echo TAR=\''$(subst ','\'',$(TAR))'\' >>$@
|
@echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@
|
||||||
|
|
||||||
### Detect Tck/Tk interpreter path changes
|
### Detect Tck/Tk interpreter path changes
|
||||||
ifndef NO_TCLTK
|
ifndef NO_TCLTK
|
||||||
|
@ -67,7 +67,7 @@ test_expect_success \
|
|||||||
test_expect_success \
|
test_expect_success \
|
||||||
'validate file modification time' \
|
'validate file modification time' \
|
||||||
'mkdir extract &&
|
'mkdir extract &&
|
||||||
$TAR xf b.tar -C extract a/a &&
|
"$TAR" xf b.tar -C extract a/a &&
|
||||||
perl -e '\''print((stat("extract/a/a"))[9], "\n")'\'' >b.mtime &&
|
perl -e '\''print((stat("extract/a/a"))[9], "\n")'\'' >b.mtime &&
|
||||||
echo "1117231200" >expected.mtime &&
|
echo "1117231200" >expected.mtime &&
|
||||||
diff expected.mtime b.mtime'
|
diff expected.mtime b.mtime'
|
||||||
@ -79,7 +79,7 @@ test_expect_success \
|
|||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'extract tar archive' \
|
'extract tar archive' \
|
||||||
'(cd b && $TAR xf -) <b.tar'
|
'(cd b && "$TAR" xf -) <b.tar'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'validate filenames' \
|
'validate filenames' \
|
||||||
@ -96,7 +96,7 @@ test_expect_success \
|
|||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'extract tar archive with prefix' \
|
'extract tar archive with prefix' \
|
||||||
'(cd c && $TAR xf -) <c.tar'
|
'(cd c && "$TAR" xf -) <c.tar'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'validate filenames with prefix' \
|
'validate filenames with prefix' \
|
||||||
@ -116,7 +116,7 @@ test_expect_success \
|
|||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'extract substfiles' \
|
'extract substfiles' \
|
||||||
'(mkdir f && cd f && $TAR xf -) <f.tar'
|
'(mkdir f && cd f && "$TAR" xf -) <f.tar'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'validate substfile contents' \
|
'validate substfile contents' \
|
||||||
@ -128,7 +128,7 @@ test_expect_success \
|
|||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'extract substfiles from archive with prefix' \
|
'extract substfiles from archive with prefix' \
|
||||||
'(mkdir g && cd g && $TAR xf -) <g.tar'
|
'(mkdir g && cd g && "$TAR" xf -) <g.tar'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'validate substfile contents from archive with prefix' \
|
'validate substfile contents from archive with prefix' \
|
||||||
|
Loading…
Reference in New Issue
Block a user