git-am: use printf instead of echo on user-supplied strings

Under some implementations of echo (such as that provided by
dash), backslash escapes are recognized without any other
options. This means that echo-ing user-supplied strings may
cause any backslash sequences in them to be converted. Using
printf resolves the ambiguity.

This bug can be seen when using git-am to apply a patch
whose subject contains the character sequence "\n"; the
characters are converted to a literal newline. Noticed by
Szekeres Istvan.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Jeff King 2007-05-25 23:42:36 -04:00 committed by Junio C Hamano
parent c1bab2889e
commit 4b7cc26a74

View File

@ -331,7 +331,7 @@ do
ADD_SIGNOFF=
fi
{
echo "$SUBJECT"
printf '%s\n' "$SUBJECT"
if test -s "$dotest/msg-clean"
then
echo
@ -394,7 +394,7 @@ do
fi
echo
echo "Applying '$SUBJECT'"
printf 'Applying %s\n' "$SUBJECT"
echo
case "$resolved" in