From 75541aa42b073a5f34a7c54eb10989cb81ae23c8 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 17 Apr 2026 10:12:31 +1000 Subject: [PATCH] os/log: handle NULL string argument in vpnprintf Since this function is called from signal handlers (e.g. OsSigHandler processing SIGSEGV/SIGBUS), a NULL %s argument triggers a recursive fault. Assisted-by: Claude:claude-claude-opus-4-6 Part-of: --- os/log.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/os/log.c b/os/log.c index c0ebf1fff..21b52a94a 100644 --- a/os/log.c +++ b/os/log.c @@ -418,7 +418,7 @@ vpnprintf(char *string, int size_in, const char *f, va_list args) int f_idx = 0; int s_idx = 0; int f_len = strlen_sigsafe(f); - char *string_arg; + const char *string_arg; char number[21]; int p_len; int i; @@ -474,6 +474,8 @@ vpnprintf(char *string, int size_in, const char *f, va_list args) switch (f[f_idx]) { case 's': string_arg = va_arg(args, char*); + if (!string_arg) + string_arg = "(null)"; for (i = 0; string_arg[i] != 0 && s_idx < size - 1 && s_idx < precision; i++) string[s_idx++] = string_arg[i];