[PATCH v7] Implement strlcpy, strlcat [BZ #178]

Alexander Cherepanov ch3root@openwall.com
Fri Jan 8 20:35:00 GMT 2016


On 2016-01-08 22:30, Zack Weinberg wrote:
> It remains my opinion that if strl{cpy,cat} are to appear at all in
> glibc they should be bug-for-bug compatible with the original OpenBSD
> *implementation* (not the ambiguously worded manpage),

OpenBSD strlcat has undefined behavior when dst=NULL and dsize=0. Should 
glibc implementation have it too? :-)
Another question: OpenBSD strlcpy/strlcat copy memory in a specific 
order with an explicit loop, AFAIK using memcmp doesn't guarantee the 
same, should memcmp be ditched here?

Actually, everything is not that bad. Discussion is mostly about 
documentation so it should not affect what is used.

But perhaps it's worth stating it explicitly. There are two separate 
questions:
1) what should ordinary glibc implementation of strlcpy/strlcat do;
2) which cases should be documented as supported so that all other cases 
could be catched by a hardened implementation.
Paraphrasing the famous principle: be conservative in what you document, 
be liberal in what you implement.

So, I guess it's better to keep size==0 check in strlcat but document 
this case as invalid.

 > or else they
 > will fail to achieve the desired effect -- applications will continue
 > to use their own implementations.

Or worse: they will use glibc implementation and fail in unpredictable ways.

-- 
Alexander Cherepanov



More information about the Libc-alpha mailing list