On 1/12/26 17:16, Cédric Le Goater wrote:
Newer gcc compiler (version 16.0.0 20260103 (Red Hat 16.0.0-0) (GCC))
detects a truncation error:

   ../target/riscv/cpu.c: In function ‘riscv_isa_write_fdt’:
   ../target/riscv/cpu.c:2916:35: error: ‘%d’ directive output may be truncated 
writing between 1 and 11 bytes into a region of size 5 
[-Werror=format-truncation=]
    2916 |     snprintf(isa_base, maxlen, "rv%di", xlen);
         |                                   ^~
   ../target/riscv/cpu.c:2916:32: note: directive argument in the range 
[-2147483648, 2147483632]
    2916 |     snprintf(isa_base, maxlen, "rv%di", xlen);
         |                                ^~~~~~~

Since the xlen variable represents the register width (32, 64, 128) in
the RISC-V base ISA name, mask its value with a 8-bit bitmask to
satisfy the size constraints on the snprintf output.

Cc: Palmer Dabbelt <[email protected]>
Cc: Alistair Francis <[email protected]>
Cc: Weiwei Li <[email protected]>
Cc: Daniel Henrique Barboza <[email protected]>
Cc: Liu Zhiwei <[email protected]>
Signed-off-by: Cédric Le Goater <[email protected]>
---
  target/riscv/cpu.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 
ffd98e8eed468645b8ceb8a7adb45718bdc4444d..e95eea024939d2cbb5747781c291fed0e1b07bb9
 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -2913,7 +2913,7 @@ void riscv_isa_write_fdt(RISCVCPU *cpu, void *fdt, char 
*nodename)
      riscv_isa = riscv_isa_string(cpu);
      qemu_fdt_setprop_string(fdt, nodename, "riscv,isa", riscv_isa);
- snprintf(isa_base, maxlen, "rv%di", xlen);
+    snprintf(isa_base, maxlen, "rv%di", xlen & 0xFF);
      qemu_fdt_setprop_string(fdt, nodename, "riscv,isa-base", isa_base);
isa_extensions = riscv_isa_extensions_list(cpu, &count);

Applied to vfio-next.

Thanks,

C.


Reply via email to