On Thu, 2020-07-16 at 17:18 -0500, Benjamin Marzinski wrote: > On Thu, Jul 09, 2020 at 12:15:57PM +0200, mwilck@xxxxxxxx wrote: > > From: Martin Wilck <mwilck@xxxxxxxx> > > > > Also remove the redundant local variables. It's not necessary to > > make "restrict" work, but it makes the intention more clear. > > > > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > > --- > > libmultipath/util.c | 28 ++++++++++++---------------- > > libmultipath/util.h | 4 ++-- > > 2 files changed, 14 insertions(+), 18 deletions(-) > > > > diff --git a/libmultipath/util.c b/libmultipath/util.c > > index 957fb97..f965094 100644 > > --- a/libmultipath/util.c > > +++ b/libmultipath/util.c > > > > -size_t strlcat(char *dst, const char *src, size_t size) > > +size_t strlcat(char * restrict dst, const char * restrict src, > > size_t size) > > { > > size_t bytes = 0; > > - char *q = dst; > > - const char *p = src; > > char ch; > > > > - while (bytes < size && *q) { > > - q++; > > + while (bytes < size && *dst) { > > + dst++; > > bytes++; > > } > > if (bytes == size) > > this should return the strlen(dst) + strlen(src). It wouldn't in the > admittedly weird case where size isn't large enough to fit dst. Are you sure? https://linux.die.net/man/3/strlcat "Note, however, that if strlcat() traverses size characters without finding a NUL, the length of the string is considered to be size and the destination string will not be NUL-terminated (since there was no space for the NUL)." The way I understand this is that the current code is actually correct in returning bytes + strlen(src). This is also consistent with what I see elsewhere https://github.com/ffainelli/uClibc/blob/master/libc/string/strlcat.c https://github.com/freebsd/freebsd/blob/master/crypto/heimdal/lib/roken/strlcat.c Regards Martin -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel