bugmail-sender at Sun.COM wrote:
> *Synopsis*: bug in pattern matching
> 
> CR 6766246 changed on Nov 4 2008 by <User 1-5Q-1267>
[snip]
> Category
>    shell
> Sub-Category
>    bourne
> Description
>    This was already reported as
> http://www.opensolaris.org/jive/thread.jspa?threadID=80967
> The bootstrap script of pkgsrc contains this code
> checkarg_sane_absolute_path() {
>   case "$1" in
>     "") ;; # the default value will be used.
>     *[!-A-Za-z0-9_./]*)
>       die "ERROR: Invalid characters in path $1 (from $2)." ;;
>     /*) ;;
>     *) die "ERROR: The argument to $2 must be an absolute path." ;;
>   esac
> }
> It turns out, the leading "!" in the pattern is not interpreted as negation, 
> and the first "-" not as a literal. Instead the character range "! to A" is 
> constructed. Paths containing "%" or "@" are accepted, but paths containing 
> "-" are rejected. Note that this interpretation makes the whole pattern 
> syntactically wrong, which isn't noticed either.
> Frequency
>    Always
> Regression
>    Solaris 10
> Steps to Reproduce
>    run example below
> Expected Result
>    strings containing a "-" should be accepted, strings containing a "@" 
> should be rejected
> Actual Result
>    strings containing a "-" are rejected, strings containing a "@" are 
> accepted
> Error Message(s)
> 
> Test Case
>    #!/bin/sh
> case "$1" in
> *[!-A-Za-z0-9_./]*)
>         echo invalid characters used in $1
>         ;;
> *)
>         echo only valid characters used in $1
>         ;;
> esac
> Workaround
>    The pattern "*[!A-Za-z0-9_./-]*" (i.e. shifting the dash to the end) works 
> as expected.
> Submitter wants to work on bug
>    No
> Additional configuration information
> 
> *** (#1 of 1): 2008-10-31 17:54:10 GMT+00:00 <User 1-F4SZV>
> 
> === *Public Comments* ========================================================
> Since the post on the forums that was posted to says "I am using OpenSolaris
> 2008.05.", assigning this to shell/korn93, not shell/bourne.
> (2008.05 /bin/sh is ksh93.)
> 
> *** (#1 of 2): 2008-11-04 04:09:56 GMT+00:00 alan.coopersmith at sun.com
> *** Last Edit: 2008-11-04 15:23:49 GMT+00:00 alan.coopersmith at sun.com
> 
> Glenn Fowler has responded to the bug report on the ksh93-integration-discuss
> list/forum on opensolaris.org with:
> 
> thanks for the report
> its a coding bug exposed by character class ranges in non-C locales
> as a temporary workaround, the matching should work as expected for LC_ALL=C
> the fix has been posted in the official 2008-11-04 source tarballs at
>   http://www.research.att.com/sw/download/
> 
> [Thread at 
> http://www.opensolaris.org/jive/thread.jspa?threadID=81453&tstart=0 ]

April: Can you add the comment that the matching testcase now sits in
http://svn.genunix.org/repos/on/branches/ksh93/gisburn/scripts/tests/sun_solaris_cr_6766246_pattern_matching_bug.sh
, please ?

I'll update the prototype012 tree to ast-ksh.2008-11-04 in a few
hours...

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.mainz at nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)

Reply via email to