On 12/29/22 20:19, Alejandro Colomar via Libc-alpha wrote: > Hi, > > I was reading rawmemchr(3), and found some funny text: > > RETURN VALUE >        The  memchr()  and memrchr() functions return a pointer to the matching >        byte or NULL if the character does not occur in the given memory area. > >        The rawmemchr() function returns a pointer to the matching byte, if one >        is found.  If no matching byte is found, the result is unspecified. > > > Of course, if the byte is not found, the result is not unspecified, but rather > undefined, and a crash is very likely so maybe there's not even a result.  I > thought this might be a thinko of the manual page, but the glibc manual seems to > have similar text: > > > > " > The rawmemchr function exists for just this situation which is surprisingly > frequent. The interface is similar to memchr except that the size parameter is > missing. The function will look beyond the end of the block pointed to by block > in case the programmer made an error in assuming that the byte c is present in > the block. In this case the result is unspecified. Otherwise the return value is > a pointer to the located byte. > " > > > That test can't be true, and the result of that function when there's no match s/test/text/ > can't be anything other than UB, and likely a crash.  Please fix the doc. > > Cheers, > > Alex --