Re: Crash on valid input

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/08/2013 08:43 PM, Dan Kegel wrote:
> If I check for an empty string like this:
> 
> + test ! $foo

You know, this is highly reliant on $foo expanding to either nothing (it
is empty, so you are really invoking the one-argument form 'test !'
which is true) or a single shell word (the two-argument form 'test !
nonempty' is false).  But if $foo has embedded whitespace, it expands to
more than one word after word-splitting, and you're hosed ('test ! one
two' can give interesting results, and probably not what you were
expecting).

You might want to fix your script to just use the safer:

! test "$foo"

which works even if $foo has embedded whitespace.  That said, you are
correct that dash should never crash.

> 
> dash crashes.  This occurs both in the version shipped with ubuntu
> 10.04 and 12.04
> as well as with dash from git.
> 
> Here's the stack:
> 
> Program received signal SIGSEGV, Segmentation fault.
> __strcmp_sse4_2 () at ../sysdeps/i386/i686/multiarch/strcmp-sse4.S:221
> 221 ../sysdeps/i386/i686/multiarch/strcmp-sse4.S: No such file or directory.
> (gdb) bt
> #0  __strcmp_sse4_2 () at ../sysdeps/i386/i686/multiarch/strcmp-sse4.S:221
> #1  0x0805938a in getop (s=0x202b <Address 0x202b out of bounds>) at
> bltin/test.c:168
> #2  0x08059c91 in t_lex (tp=0x806581c) at bltin/test.c:431
> #3  0x080595cb in aexpr (n=UNOT) at bltin/test.c:260
> #4  0x08059557 in oexpr (n=UNOT) at bltin/test.c:243
> #5  0x080594ba in testcmd (argc=1, argv=0x8065814) at bltin/test.c:219
> #6  0x0804c526 in evalbltin (cmd=0x805da1c, argc=2, argv=0x8065810,
> flags=0) at eval.c:910

and given this part of the stack trace, it looks like you were invoking
'test ! word'?  But I was unable to reproduce a crash when I tried
dash.git, so it would be helpful to know exactly what $foo was in your
reproducer.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux