]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
hw/nvme: Fix bootindex suffix use-after-free
authorAkihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Sun, 25 Jan 2026 06:42:47 +0000 (15:42 +0900)
committerPhilippe Mathieu-Daudé <philmd@linaro.org>
Mon, 2 Feb 2026 15:43:38 +0000 (16:43 +0100)
The bootindex suffix can be used as long as the property is alive.

Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20260125-nvme-v1-5-0658c31fade9@rsg.ci.i.u-tokyo.ac.jp>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
hw/nvme/ns.c
hw/nvme/nvme.h

index 58800b3414a37e834a836c5589bc3a058e676a67..38f86a17268fd40b275e3f825b03476f67280afd 100644 (file)
@@ -944,12 +944,11 @@ static void nvme_ns_class_init(ObjectClass *oc, const void *data)
 static void nvme_ns_instance_init(Object *obj)
 {
     NvmeNamespace *ns = NVME_NS(obj);
-    char *bootindex = g_strdup_printf("/namespace@%d,0", ns->params.nsid);
 
-    device_add_bootindex_property(obj, &ns->bootindex, "bootindex",
-                                  bootindex, DEVICE(obj));
+    sprintf(ns->bootindex_suffix, "/namespace@%" PRIu32 ",0", ns->params.nsid);
 
-    g_free(bootindex);
+    device_add_bootindex_property(obj, &ns->bootindex, "bootindex",
+                                  ns->bootindex_suffix, DEVICE(obj));
 }
 
 static const TypeInfo nvme_ns_info = {
index 8f8c78c85036d3288f6fe180ded8df680ac8866f..d66f7dc82d5c81861eaa9aa2e18120f7ae76e839 100644 (file)
@@ -239,6 +239,7 @@ typedef struct NvmeNamespace {
     DeviceState  parent_obj;
     BlockConf    blkconf;
     int32_t      bootindex;
+    char         bootindex_suffix[24];
     int64_t      size;
     int64_t      moff;
     NvmeIdNs     id_ns;