summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Swiecki <robert@swiecki.net>2023-11-24 17:34:55 +0100
committerRobert Swiecki <robert@swiecki.net>2023-11-24 17:34:55 +0100
commit191266061f5cd89082a0238b04cb367f8e099e17 (patch)
tree5589e58dd559578a7a5b85d44e9753d51c8b4824
parent88709ce60f45ee13666a2628f03467c57429c7db (diff)
downloadhonggfuzz-191266061f5cd89082a0238b04cb367f8e099e17.tar.gz
libhfuzz: fix strlcat wrapper
-rw-r--r--libhfuzz/memorycmp.c11
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 */