Am 08.07.2017 um 15:38 schrieb Andreas Schwab:
On Jul 08 2017, René Scharfe <l.s.r@xxxxxx> wrote:
Am 08.07.2017 um 13:08 schrieb Andreas Schwab:
On Jul 08 2017, René Scharfe <l.s.r@xxxxxx> wrote:
Avoid running over the end of another -- a C string whose length we
don't know -- by using strcmp(3) instead of memcmp(3) for comparing it
with another C string.
That's not a good justification for the change, since memcmp never reads
past the differing characters.
Interesting. Where does that guarantee come from?
Sorry, I misremembered. It's only memchr that has this restriction.
Hmm, I can't get ASan to complain about memchr reading beyond the end of
a C string, but I don't know why. Glibc reads full words [1], and I
don't see how the standard [2] forbids reading past the found byte.
René
[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=string/memchr.c
[2] http://pubs.opengroup.org/onlinepubs/009695399/functions/memchr.html