aboutsummaryrefslogtreecommitdiff
path: root/hw/s390x/s390-virtio-ccw.c
diff options
context:
space:
mode:
authorGreg Kurz <groug@kaod.org>2018-03-29 11:10:06 +0200
committerCornelia Huck <cohuck@redhat.com>2018-04-03 10:03:38 +0200
commitd9b06db813270d9deacd9e8f2ae3fd0d88f03f2a (patch)
treeb056afb3a00fd6dc7edc4acbd7987441f6b43e4d /hw/s390x/s390-virtio-ccw.c
parentf184de7553272223d6af731d7d623a7cebf710b5 (diff)
downloadqemu-d9b06db813270d9deacd9e8f2ae3fd0d88f03f2a.zip
qemu-d9b06db813270d9deacd9e8f2ae3fd0d88f03f2a.tar.gz
qemu-d9b06db813270d9deacd9e8f2ae3fd0d88f03f2a.tar.bz2
hw/s390x: fix memory leak in s390_init_ipl_dev()
The string returned by object_property_get_str() is dynamically allocated. Fixes: 3c4e9baacf4d9 Signed-off-by: Greg Kurz <groug@kaod.org> Message-Id: <152231460685.69730.14860451936216690693.stgit@bahia.lan> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'hw/s390x/s390-virtio-ccw.c')
-rw-r--r--hw/s390x/s390-virtio-ccw.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 864145a..435f7c9 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -246,6 +246,7 @@ static void s390_init_ipl_dev(const char *kernel_filename,
{
Object *new = object_new(TYPE_S390_IPL);
DeviceState *dev = DEVICE(new);
+ char *netboot_fw_prop;
if (kernel_filename) {
qdev_prop_set_string(dev, "kernel", kernel_filename);
@@ -256,9 +257,11 @@ static void s390_init_ipl_dev(const char *kernel_filename,
qdev_prop_set_string(dev, "cmdline", kernel_cmdline);
qdev_prop_set_string(dev, "firmware", firmware);
qdev_prop_set_bit(dev, "enforce_bios", enforce_bios);
- if (!strlen(object_property_get_str(new, "netboot_fw", &error_abort))) {
+ netboot_fw_prop = object_property_get_str(new, "netboot_fw", &error_abort);
+ if (!strlen(netboot_fw_prop)) {
qdev_prop_set_string(dev, "netboot_fw", netboot_fw);
}
+ g_free(netboot_fw_prop);
object_property_add_child(qdev_get_machine(), TYPE_S390_IPL,
new, NULL);
object_unref(new);