David Steele <david@pgmasters.net> writes:
> On 3/25/18 3:22 PM, Tom Lane wrote:
>> Actually, that code didn't guarantee zero termination under *any*
>> circumstances; it only happened to work if the stack contained
>> zeroes to start with.
> Interesting. strncpy() says it will pad the destination with NULLs when
> src is less than the size provided. Perhaps some compilers don't honor
> that?
Yeah, but the "size provided" was the number of characters to be copied
from the source string, not the size of the destination buffer. So
strncpy didn't think it needed to add any nulls. There's a reason why
that function is widely disliked --- it's hard to use it in a safe way.
regards, tom lane