my strstr is broken
Wilco Dijkstra
Wilco.Dijkstra@arm.com
Wed Sep 12 13:11:00 GMT 2018
Adhemerval wrote:
> On 11/09/2018 15:46, Wilco Dijkstra wrote:
>> Siddhesh wrote:
>>
>>> Is this a non-x86 architecture? I can reproduce this on the glibc
>>> 2.28 tag when I hack the ifunc resolver to ignore
>>> __strstr_sse2_unaligned and always use the stock __strstr.
>>
>> It's the generic strstr indeed. The issue is due to the long needle code using
>> the same AVAILABLE macro as for short needles. Since the macro now
>> ensures the haystack contains up to 512 valid characters, it cannot handle
>> needles which are longer than this. The fix is easy, just add the needle length.
>> I'll post a patch.
>
> Does it affect memmem as well? It would be useful to check it the tests
> are inadequate and fix them if the case for memmem.
Strcasestr uses the same readahead mechanism, but memmem is fine since it
doesn't use null-terminated strings. The issue is due to trying to avoid calling strlen
on the whole string - it's not obvious that's worth the increase in complexity.
Wilco
More information about the Libc-alpha
mailing list