svn commit: r276363 - in stable/10/bin/sh: . tests/expansion
Jilles Tjoelker
jilles at FreeBSD.org
Mon Dec 29 15:11:09 UTC 2014
Author: jilles
Date: Mon Dec 29 15:11:07 2014
New Revision: 276363
URL: https://svnweb.freebsd.org/changeset/base/276363
Log:
MFC r273920: sh: Fix corruption of CTL* bytes in positional parameters in
redirection.
EXP_REDIR was not being checked for while expanding positional parameters in
redirection, so CTL* bytes were not being prefixed where they should be.
Added:
stable/10/bin/sh/tests/expansion/redir1.0
- copied unchanged from r273920, head/bin/sh/tests/expansion/redir1.0
Modified:
stable/10/bin/sh/expand.c
stable/10/bin/sh/tests/expansion/Makefile
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/bin/sh/expand.c
==============================================================================
--- stable/10/bin/sh/expand.c Mon Dec 29 14:52:32 2014 (r276362)
+++ stable/10/bin/sh/expand.c Mon Dec 29 15:11:07 2014 (r276363)
@@ -867,7 +867,7 @@ varisset(const char *name, int nulok)
static void
strtodest(const char *p, int flag, int subtype, int quoted)
{
- if (flag & (EXP_FULL | EXP_CASE) && subtype != VSLENGTH)
+ if (flag & (EXP_FULL | EXP_CASE | EXP_REDIR) && subtype != VSLENGTH)
STPUTS_QUOTES(p, quoted ? DQSYNTAX : BASESYNTAX, expdest);
else
STPUTS(p, expdest);
Modified: stable/10/bin/sh/tests/expansion/Makefile
==============================================================================
--- stable/10/bin/sh/tests/expansion/Makefile Mon Dec 29 14:52:32 2014 (r276362)
+++ stable/10/bin/sh/tests/expansion/Makefile Mon Dec 29 15:11:07 2014 (r276363)
@@ -69,6 +69,7 @@ FILES+= plus-minus7.0
FILES+= plus-minus8.0
FILES+= question1.0
FILES+= readonly1.0
+FILES+= redir1.0
FILES+= set-u1.0
FILES+= set-u2.0
FILES+= set-u3.0
Copied: stable/10/bin/sh/tests/expansion/redir1.0 (from r273920, head/bin/sh/tests/expansion/redir1.0)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/10/bin/sh/tests/expansion/redir1.0 Mon Dec 29 15:11:07 2014 (r276363, copy of r273920, head/bin/sh/tests/expansion/redir1.0)
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+bad=0
+for i in 0 1 2 3; do
+ for j in 0 1 2 3 4 5 6 7; do
+ for k in 0 1 2 3 4 5 6 7; do
+ case $i$j$k in
+ 000) continue ;;
+ esac
+ set -- "$(printf \\$i$j$k@)"
+ set -- "${1%@}"
+ ff=
+ for f in /dev/null /dev/zero /; do
+ if [ -e "$f" ] && [ ! -e "$f$1" ]; then
+ ff=$f
+ fi
+ done
+ [ -n "$ff" ] || continue
+ if { true <$ff$1; } 2>/dev/null; then
+ echo "Bad: $i$j$k ($ff)" >&2
+ : $((bad += 1))
+ fi
+ done
+ done
+done
+exit $((bad ? 2 : 0))
More information about the svn-src-all
mailing list