bug-grep
[Top][All Lists]
Advanced

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

Re: [PATCH] tests: exercise two recently-fixed bugs


From: Paolo Bonzini
Subject: Re: [PATCH] tests: exercise two recently-fixed bugs
Date: Fri, 16 Mar 2012 13:09:50 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120216 Thunderbird/10.0.1

Il 16/03/2012 13:04, Paolo Bonzini ha scritto:
> Il 16/03/2012 09:44, Jim Meyering ha scritto:
>>>>>> +xp1=4294967297 # 2^32+1
>>>>>> +xp2=4294967298 # 2^32+2
>>>>>> +
>>>>>> +fail=0
>>>>>> +
>>>>>> +# Before grep-2.11, when DFA-matching, a repetition count exceeding the
>>>>>> +# range of "unsigned int" would silently wrap around.   Hence, 2^32+1
>>>>>> +# would be treated just like "1", and both of these would mistakenly 
>>>>>> match.
>>>>>> +
>>>>>> +echo abc  | grep -E "b{$xp1}"   > out 2>&1; test $? = 1 || fail=1
>>>>>> +compare out /dev/null || fail=1
>>>>>> +echo abbc | grep -E "b{1,$xp2}" > out 2>&1; test $? = 1 || fail=1
>>>>>> +compare out /dev/null || fail=1
>> ...
>>>>
>>>> Should this be marked as expensive?
>> Hi Paolo,
>>
>> Why?
>> That test takes only a small fraction of a second.
>> If it's slow for you, then there must be a bug.
>> Or maybe you mean some other test?
> 
> Based on the code it should have been awfully expensive.  I'll take a look.
> 
> Paolo
> 
> 

Ah, ok, I missed this:

                        if (RE_DUP_MAX < hi)
                          goto normal_char;

which has this interesting result:

$ echo 'b{1000000000}' | grep -E '^b{1000000000}$'
b{1000000000}

I think we should give a "repeat count too large" error here.  The regex
is being compiled to a different meaning than what the user intended.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]