diff options
author | Robert Swiecki <robert@swiecki.net> | 2023-11-24 17:34:55 +0100 |
---|---|---|
committer | Robert Swiecki <robert@swiecki.net> | 2023-11-24 17:34:55 +0100 |
commit | 191266061f5cd89082a0238b04cb367f8e099e17 (patch) | |
tree | 5589e58dd559578a7a5b85d44e9753d51c8b4824 | |
parent | 88709ce60f45ee13666a2628f03467c57429c7db (diff) | |
download | honggfuzz-191266061f5cd89082a0238b04cb367f8e099e17.tar.gz |
libhfuzz: fix strlcat wrapper
-rw-r--r-- | libhfuzz/memorycmp.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libhfuzz/memorycmp.c b/libhfuzz/memorycmp.c index a71ee50b..8f912c03 100644 --- a/libhfuzz/memorycmp.c +++ b/libhfuzz/memorycmp.c @@ -225,8 +225,15 @@ static inline size_t HF_strlcpy(char* dest, const char* src, size_t sz, uintptr_ } 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 */ |