From 883f5bae4ef9700d44d322ea784d04c9752d4230 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 30 Mar 2026 17:36:39 -0700 Subject: [PATCH] utils: Prevent stack buffer leaks by safely trapping snprintf error bounds in Systrace --- libs/utils/src/android/Systrace.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libs/utils/src/android/Systrace.cpp b/libs/utils/src/android/Systrace.cpp index 0b03d4951d..889bb51bac 100644 --- a/libs/utils/src/android/Systrace.cpp +++ b/libs/utils/src/android/Systrace.cpp @@ -186,16 +186,20 @@ void Systrace::init(uint32_t tag) noexcept { len = snprintf(buf, sizeof(buf), format_begin "%.*s" format_end, pid, \ name_len, name, value); \ } \ - write(fd, buf, len); \ + if (len >= 0) { \ + write(fd, buf, len); \ + } \ } void Systrace::begin_body(int fd, int pid, const char* name) noexcept { char buf[ATRACE_MESSAGE_LENGTH]; ssize_t len = snprintf(buf, sizeof(buf), "B|%d|%s", pid, name); - if (len >= sizeof(buf)) { - len = sizeof(buf) - 1; + if (len >= 0) { + if (len >= sizeof(buf)) { + len = sizeof(buf) - 1; + } + write(fd, buf, size_t(len)); } - write(fd, buf, size_t(len)); } void Systrace::end_body(int fd, int pid) noexcept {