diff options
Diffstat (limited to 'src/string/strcpy_s.c')
-rw-r--r-- | src/string/strcpy_s.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/string/strcpy_s.c b/src/string/strcpy_s.c index 1e3546f2..c38ebfb5 100644 --- a/src/string/strcpy_s.c +++ b/src/string/strcpy_s.c @@ -8,9 +8,15 @@ errno_t strcpy_s(char * restrict s1, rsize_t s1max, const char * restrict s2) SIGNAL_SAFE(0); ASSERT_NONNULL(s1); ASSERT_NONNULL(s2); - ASSERT_NOOVERLAP(s1, s1max, s2, strlen(s2)); + DANGEROUS_READ(s2, -1); + size_t len = strlen(s2); + ASSERT_NOOVERLAP(s1, s1max, s2, len); + DANGEROUS_WRITE(s1, s1max); strncpy(s1, s2, strlen(s2)); + + DANGER_OVER(); + return 0; } |