From 6095c7dd3b6750eaac7eee7a6327ae68af19097e Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Thu, 16 Oct 2025 14:48:10 +0200 Subject: [PATCH] hw/openrisc/openrisc_sim: Avoid buffer overflow build error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Resolves this build breakage (which is actually a false-positive) ../hw/openrisc/openrisc_sim.c: In function ‘openrisc_sim_init’: ../hw/openrisc/openrisc_sim.c:284:45: error: ‘__builtin___snprintf_chk’ output may be truncated before the last format character [-Werror=format-truncation=] snprintf(alias, sizeof(alias), "serial%d", uart_idx); ^ In file included from /usr/include/stdio.h:964:0, from /data/qemu/include/qemu/osdep.h:114, from ../hw/openrisc/openrisc_sim.c:21: /usr/include/bits/stdio2.h:54:10: note: ‘__builtin___snprintf_chk’ output between 8 and 9 bytes into a destination of size 8 return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __glibc_objsize (__s), __fmt, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __va_arg_pack ()); ~~~~~~~~~~~~~~~~~ by using a modern, more robust allocation pattern. Suggested-by: Peter Maydell Signed-off-by: Jan Kiszka Reviewed-by: Peter Maydell Message-ID: <298bd904-1ee9-439e-8220-7a24e0952861@siemens.com> Signed-off-by: Philippe Mathieu-Daudé --- hw/openrisc/openrisc_sim.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index 880c8ebbb8..b7d9cdd900 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -247,10 +247,10 @@ static void openrisc_sim_serial_init(Or1ksimState *state, hwaddr base, OpenRISCCPU *cpus[], int irq_pin, int uart_idx) { + g_autofree char *alias = g_strdup_printf("serial%d", uart_idx); void *fdt = state->fdt; char *nodename; qemu_irq serial_irq; - char alias[sizeof("serial0")]; int i; if (num_cpus > 1) { @@ -281,7 +281,6 @@ static void openrisc_sim_serial_init(Or1ksimState *state, hwaddr base, /* The /chosen node is created during fdt creation. */ qemu_fdt_setprop_string(fdt, "/chosen", "stdout-path", nodename); } - snprintf(alias, sizeof(alias), "serial%d", uart_idx); qemu_fdt_setprop_string(fdt, "/aliases", alias, nodename); g_free(nodename); -- 2.47.3