On 27 Jan 2018, at 23:20, Ed Schouten <e...@nuxi.nl> wrote: > > 2018-01-27 23:16 GMT+01:00 Pedro F. Giffuni <p...@freebsd.org>: >> char host[sizeof(utmp.ut_host) + 1]; >> insecure = 1; >> >> - strncpy(host, utmp.ut_host, sizeof(utmp.ut_host)); >> - host[sizeof(utmp.ut_host)] = 0; >> + strncpy(host, utmp.ut_host, sizeof(host)); > > 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, if the length of the source is equal to or greater than len, the destination is *not* null terminated. This is likely why the "host[sizeof(utmp.ut_host)] = 0;" statement was added. In any case, this is why strlcpy exists. :) -Dimitry
signature.asc
Description: Message signed with OpenPGP