Blame tests/repetition-overflow
|
Packit |
709fb3 |
#!/bin/sh
|
|
Packit |
709fb3 |
# These would fail (i.e., match erroneously) prior to grep-2.11.
|
|
Packit |
709fb3 |
. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
xp1=4294967297 # 2^32+1
|
|
Packit |
709fb3 |
xp2=4294967298 # 2^32+2
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
fail=0
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
# Before grep-2.11, when DFA-matching, a repetition count exceeding the
|
|
Packit |
709fb3 |
# range of "unsigned int" would silently wrap around. Hence, 2^32+1
|
|
Packit |
709fb3 |
# would be treated just like "1", and both of these would mistakenly match.
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
echo abc | returns_ 2 grep -E "b{$xp1}" > out 2> /dev/null || fail=1
|
|
Packit |
709fb3 |
compare /dev/null out || fail=1
|
|
Packit |
709fb3 |
echo abbc | returns_ 2 grep -E "b{1,$xp2}" > out 2> /dev/null || fail=1
|
|
Packit |
709fb3 |
compare /dev/null out || fail=1
|
|
Packit |
709fb3 |
|
|
Packit |
709fb3 |
Exit $fail
|