On 3/25/18 3:54 PM, Tom Lane wrote: > David Steele <da...@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 da...@pgmasters.net