From 4f29706128f3d3a66f0503d07c4960d4021aaf27 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Tue, 11 Jun 2024 13:44:21 -0400 Subject: support watching for dangerous parameter access --- src/string/strncat.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/string/strncat.c') diff --git a/src/string/strncat.c b/src/string/strncat.c index 563f055f..0d7dd9e7 100644 --- a/src/string/strncat.c +++ b/src/string/strncat.c @@ -11,9 +11,15 @@ char * strncat(char * restrict s1, const char * restrict s2, size_t n) SIGNAL_SAFE(0); ASSERT_NONNULL(s1); ASSERT_NONNULL(s2); - ASSERT_NOOVERLAP(s1, n, s2, strlen(s1) + strlen(s2)); + DANGEROUS_READ(s1, n); + size_t s1len = strlen(s1); + DANGER_OVER(); + DANGEROUS_READ(s2, n); + size_t s2len = strlen(s2); + ASSERT_NOOVERLAP(s1, n, s2, s1len + s2len); + DANGEROUS_WRITE(s1, n); - append = s1 + strlen(s1); + append = s1 + s1len; for (i = 0; i < n; i++) { append[i] = s2[i]; @@ -26,6 +32,8 @@ char * strncat(char * restrict s1, const char * restrict s2, size_t n) append[i] = '\0'; } + DANGER_OVER(); + return s1; } -- cgit v1.2.1