On 3/25/18 3:54 PM, Tom Lane wrote:
> 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.
Whoops, how right you are. I'm generally passing destination buffer
size in these cases and totally misread what this was doing.
--
-David
david@pgmasters.net