libhfuzz: fix strlcat wrapper
diff --git a/libhfuzz/memorycmp.c b/libhfuzz/memorycmp.c index a71ee50..8f912c0 100644 --- a/libhfuzz/memorycmp.c +++ b/libhfuzz/memorycmp.c
@@ -225,8 +225,15 @@ } static inline size_t HF_strlcat(char* dest, const char* src, size_t sz, uintptr_t addr) { - size_t len = __builtin_strlen(dest); - return HF_strlcpy(dest + len, src, sz, addr); + size_t dstlen = __builtin_strlen(dest); + + if (dstlen >= sz) { + return dstlen + __builtin_strlen(src); + } + + size_t left = sz - dstlen; + + return dstlen + HF_strlcpy(dest + dstlen, src, left, addr); } /* Define a weak function x, as well as __wrap_x pointing to x */