svn commit: r328492 - head/contrib/opie/libopie

Bruce Evans brde at optusnet.com.au
Sun Jan 28 01:42:47 UTC 2018


On Sat, 27 Jan 2018, Pedro Giffuni wrote:

> On 01/27/18 18:21, Bruce Evans wrote:
>> On Sat, 27 Jan 2018, Dimitry Andric wrote:
>> 
>>> On 27 Jan 2018, at 23:20, Ed Schouten <ed at nuxi.nl> wrote:

>* [... context lost to corruption of spaces which makes it unreadable]

>>>> 
>>>> Wait... This may access utmp.ut_host one byte past the end and no
>>>> longer guarantees that host is null-terminated, right?
>> 
>>> No, strncpy "copies at most len characters from src into dst".  However,
>> 
>> No, the change breaks the length so 1 byte past the end is accessed
>> in implementations where ut_host is not guaranteed to be NUL terminated
>> and the current instance of ut_host is not NUL terminated.
>> 
> The main change is in the sizeof(). Regularly you should use the size of 
> destination not the source, and apparently GCC8 decided there was something 
> to check there.

That is the main breakage.  Using the size of the destination is very wrong,
since that size is intentionally 1 larger than the size of the source, to
leave space for appending a NUL.

> ...
> Looking in detail, upstream (which appears to have disappeared) does have the 
> explicit NULL termination in our last import. For consistency and given that 
> we already have a strlcpy in that code, we should use strlcpy() there. Every 
> modern OS out there has strlcpy(3) and if not they can figure out what to do.

strlcpy() still seems to be intentionally left out of glibc.

Bruce


More information about the svn-src-all mailing list