On Thu, Apr 21, 2016 at 10:22:48AM +0300, Andrey Chernov wrote: > On 21.04.2016 9:29, Baptiste Daroussin wrote: > >>>> Modified: head/lib/libc/locale/ascii.c > >>>> ============================================================================== > >>>> --- head/lib/libc/locale/ascii.c Wed Apr 20 20:43:05 2016 > >>>> (r298366) > >>>> +++ head/lib/libc/locale/ascii.c Wed Apr 20 20:44:30 2016 > >>>> (r298367) > >>>> @@ -133,11 +133,14 @@ _ascii_mbsnrtowcs(wchar_t * __restrict d > >>>> > >>>> if (dst == NULL) { > >>>> s = memchr(*src, '\0', nms); > >>>> + if (s == NULL) > >>>> + return (nms); > >>>> + > >>>> if (*s & 0x80) { > >>>> errno = EILSEQ; > >>>> return ((size_t)-1); > >>>> } > >>>> - return (s != NULL ? s - *src : nms); > >>>> + return (s - *src); > >>>> } > >>>> > >>>> s = *src; > >>>> > >>> > >>> The whole code is incorrect, only the very first char is checked, there > >>> must be a loop like in -stable: > >>> > >>> if (dst == NULL) { > >>> for (s = *src; nms > 0 && *s != '\0'; s++, nms--) { > >>> if (*s & 0x80) { > >>> errno = EILSEQ; > >>> return ((size_t)-1); > >>> } > >>> } > >>> return (s - *src); > >>> } > >>> > >>> Since svn history is lost on deleting, I don't know why incorrect > >>> version was committed. > >>> > >> > >> Typo, the very first == the very last, i.e. only NUL char is checked > >> which always pass. > >> > > > > I have restored the history (I hope correctly) > > > > Bapt > > > I backed it out to the original version, I really sorry for all the mess I made there.
Bapt
signature.asc
Description: PGP signature