bin/57554: sh(1) incorrect handling of quoted parameter expansion
Mark Valentine
mark at thuvia.org
Fri Oct 3 17:40:17 PDT 2003
>Number: 57554
>Category: bin
>Synopsis: sh(1) incorrect handling of quoted parameter expansion
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Oct 03 17:40:14 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Mark Valentine
>Release: FreeBSD 4.8-STABLE i386
>Organization:
>Environment:
System: FreeBSD dotar.thuvia.org 4.8-STABLE FreeBSD 4.8-STABLE #6: Wed Jun 11 15:04:41 BST 2003 root at dotar.thuvia.org:/usr/obj/usr/src/sys/DOTAR i386
>Description:
sh(1) incorrectly quotes the pattern word in parameter expansions
involving prefix/suffix removal when the whole expansion is enclosed
in double quotes:
$ foo='\{foo'
$ echo ${foo#\{}
\{foo # correct (1) - pattern is {
$ echo ${foo#"\{"}
foo # correct (2) - pattern is \{
$ echo "${foo#\{}"
foo # WRONG - should be same as (1)
IEEE Std 1003.1-2001 states that "Enclosing the full parameter
expansion string in double-quotes shall not cause the [...] pattern
characters to be quoted, whereas quoting characters within the braces
shall have this effect."
NOTE: there seems to be a related problem with our handling of
${foo#{} - bash and ksh seem to expect a further matching } -
but I haven't managed to figure out chapter and verse on that
one!
I initially came across this bug in the context of (foo='{foo' and
"${foo#\{}" doing the wrong thing (real life scenario: FreeBSD-
hosted NetBSD build falls over in distrib/utils/sysinst/msg_xlat.sh),
but the above example is a clearer illustration of the part I did
manage to find chapter and verse on...
>How-To-Repeat:
>Fix:
NetBSD's sh(1) handles this correctly, if the code change can be
identified... (NOTE: possibly look at their parser.c rev 1.51 and
1.52; my brain's shut down for the day.)
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list