diff options
Diffstat (limited to 'libc/string/__strcat_chk.c')
-rw-r--r-- | libc/string/__strcat_chk.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libc/string/__strcat_chk.c b/libc/string/__strcat_chk.c index 7d8c89f..4665d66 100644 --- a/libc/string/__strcat_chk.c +++ b/libc/string/__strcat_chk.c @@ -50,11 +50,17 @@ char *__strcat_chk (char *dest, const char *src, size_t dest_buf_size) size_t sum; // sum = src_len + dest_len + 1 (with overflow protection) - if (!safe_add3(&sum, src_len, dest_len, 1U)) abort(); + if (!safe_add3(&sum, src_len, dest_len, 1U)) { + __libc_android_log_print(ANDROID_LOG_FATAL, "libc", + "*** strcat integer overflow detected ***\n"); + __libc_android_log_event_uid(BIONIC_EVENT_STRCAT_INTEGER_OVERFLOW); + abort(); + } if (sum > dest_buf_size) { __libc_android_log_print(ANDROID_LOG_FATAL, "libc", "*** strcat buffer overflow detected ***\n"); + __libc_android_log_event_uid(BIONIC_EVENT_STRNCAT_BUFFER_OVERFLOW); abort(); } |