]> git.ipfire.org Git - thirdparty/glibc.git/commit
Fix strstr bug with huge needles (bug 23637)
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 19 Sep 2018 15:50:18 +0000 (16:50 +0100)
committerWilco Dijkstra <wdijkstr@arm.com>
Wed, 19 Sep 2018 15:50:18 +0000 (16:50 +0100)
commit83a552b0bb9fc2a5e80a0ab3723c0a80ce1db9f2
tree4861e51f5b6524e080ca62aefceb6a1d052fc652
parentd734727837b5135c4c4c540d8c53e5a06aa7556a
Fix strstr bug with huge needles (bug 23637)

The generic strstr in GLIBC 2.28 fails to match huge needles.  The optimized
AVAILABLE macro reads ahead a large fixed amount to reduce the overhead of
repeatedly checking for the end of the string.  However if the needle length
is larger than this, two_way_long_needle may confuse this as meaning the end
of the string and return NULL.  This is fixed by adding the needle length to
the amount to read ahead.

[BZ #23637]
* string/test-strstr.c (pr23637): New function.
(test_main): Add tests with longer needles.
* string/strcasestr.c (AVAILABLE): Fix readahead distance.
* string/strstr.c (AVAILABLE): Likewise.
ChangeLog
string/strcasestr.c
string/strstr.c
string/test-strstr.c