This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [review] manual: Clarify strnlen, wcsnlen, strndup null termination behavior
On Okt 30 2019, Florian Weimer wrote:
> * Andreas Schwab:
>
>> On Okt 30 2019, Florian Weimer (Code Review) wrote:
>>
>>> +Note that @var{s} must be an array of at least @var{maxlen} bytes. It
>>> +is undefined to call @code{strnlen} on a shorter array, even if it is
>>> +known that the shorter array contains a null terminator.
>>
>> This is not true. strnlen _always_ stops before the null byte.
>
> This is not how it is specified in POSIX.
Yes, it is.
The strnlen() function shall return the number of bytes preceding
the first null byte in the array to which s points, if s contains a
null byte within the first maxlen bytes; otherwise, it shall return
maxlen.
There is nothing undefined here. Your interpretation would be
completely useless anyway.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."