Bug 19406

Summary: memchr description: may it access all @var{size} bytes?
Product: glibc Reporter: Alexander Cherepanov <cherepan>
Component: manualAssignee: Not yet assigned to anyone <unassigned>
Status: NEW ---    
Severity: normal CC: mtk.manpages, roland
Priority: P2    
Version: 2.22   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:

Description Alexander Cherepanov 2015-12-27 15:41:29 UTC
The description of the memchr function in C11, 7.24.5.1p2, says that memchr cannot access the part of the array after the located char:

"The implementation shall behave as if it reads the characters sequentially and stops as soon as a matching character is found."

The glibc manual doesn't provide this guarantee:

"This function finds the first occurrence of the byte @var{c} (converted to an @code{unsigned char}) in the initial @var{size} bytes of the object beginning at @var{block}.  The return value is a pointer to the located byte, or a null pointer if no match was found."

https://sourceware.org/git/?p=glibc.git;a=blob;f=manual/string.texi;h=016fd0b9a05f3126a1594e942c5e6da0669d0410;hb=HEAD#l1716

The implementation is probably fine so only the manual is wrong.