From nobody Tue Feb 10 07:41:26 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) client-ip=63.128.21.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1613152656; cv=none; d=zohomail.com; s=zohoarc; b=TZ4/xDHPBwMInpCQcQ2B+UKqmRWmKzmkLlqiB+lyBxona/gHPkqOxHv1g2xLhBGAGyHn5+OGjLSJD0Iwehh2XaxhEqjCTmCy7ffbUv2KwI7xNCG0UDMrKBF7m9syKHzmOCWAFocxrc5iIEcisyPLihooNO1CAZx8F6CIngKlCl8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613152656; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RwqIiRGLTu/WVFv6v/cyeGM3WUBJU3IljRsoINHebLY=; b=c38jZjMrGDUqKo5kYZymKqkfriF2JoWpIKhCpfmzR4xLLRYEHN2DZQd8jBrjlLf6qxfQRSqcHkFJ1rH2ppPDX0dr6z80fK3ffqGPbbHIZj8rrQRqPklDR6T3LQSWybdtjKI0CREl+H3Om8+P+ls0gY/j9/jsi6SvppaTOjx7LmQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.zohomail.com with SMTPS id 1613152655650477.13036768639347; Fri, 12 Feb 2021 09:57:35 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-274-SqBLnx5nN8KM0htQaRZTeA-1; Fri, 12 Feb 2021 12:57:30 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A1EE185EE9A; Fri, 12 Feb 2021 17:56:46 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B6D6EE150; Fri, 12 Feb 2021 17:56:45 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7B7F51809C8F; Fri, 12 Feb 2021 17:56:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 11CHueB8010927 for ; Fri, 12 Feb 2021 12:56:40 -0500 Received: by smtp.corp.redhat.com (Postfix) id AD36B5C23D; Fri, 12 Feb 2021 17:56:40 +0000 (UTC) Received: from speedmetal.lan (unknown [10.40.208.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id BB59F5C8AD for ; Fri, 12 Feb 2021 17:56:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1613152654; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=RwqIiRGLTu/WVFv6v/cyeGM3WUBJU3IljRsoINHebLY=; b=U4N+x0HxP0htkyGu/3ry//ulUnGS7LbojgPmxBo7/tBaZ3e1Q7m14gvZ/J6DMuJsLuKJq+ Elo/6dQGDOwZoZV4Yyc1rLnDXxLhiB543NGsiXPojw+NcNAseQne9RQtbgdG+CanMeJZAU N05n1dMdZUb1KrS5DL/jQPiNBso+LNs= X-MC-Unique: SqBLnx5nN8KM0htQaRZTeA-1 From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 16/25] virJSONValueObjectAppend: Clear pointer when taking ownership of passed value Date: Fri, 12 Feb 2021 18:55:29 +0100 Message-Id: <60b6d2bbba450aadef813fa347a6343891d9f5be.1613152441.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" The parent object takes ownership of the inserted value once all checks pass. Don't make the callers second-guess when that happens and modify the function to take a double pointer so that it can be cleared once the ownership is taken. Signed-off-by: Peter Krempa --- src/locking/lock_daemon.c | 9 +++---- src/logging/log_daemon.c | 6 ++--- src/logging/log_handler.c | 3 +-- src/node_device/node_device_driver.c | 2 +- src/qemu/qemu_block.c | 3 +-- src/qemu/qemu_firmware.c | 23 +++++----------- src/qemu/qemu_monitor_json.c | 22 ++++++---------- src/rpc/virnetdaemon.c | 6 ++--- src/rpc/virnetserver.c | 6 ++--- src/rpc/virnetserverclient.c | 6 ++--- src/rpc/virnetserverservice.c | 3 +-- src/util/virjson.c | 39 ++++++++++++---------------- src/util/virjson.h | 4 ++- src/util/virlockspace.c | 6 ++--- src/util/virmacmap.c | 3 +-- 15 files changed, 52 insertions(+), 89 deletions(-) diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index 5913c0cb9c..26905a462b 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -711,16 +711,14 @@ virLockDaemonPreExecRestart(const char *state_file, if (!(daemon =3D virNetDaemonPreExecRestart(dmn))) return -1; - if (virJSONValueObjectAppend(object, "daemon", daemon) < 0) + if (virJSONValueObjectAppend(object, "daemon", &daemon) < 0) return -1; - daemon =3D NULL; if (!(defaultLockspace =3D virLockSpacePreExecRestart(lockDaemon->defa= ultLockspace))) return -1; - if (virJSONValueObjectAppend(object, "defaultLockspace", defaultLocksp= ace) < 0) + if (virJSONValueObjectAppend(object, "defaultLockspace", &defaultLocks= pace) < 0) return -1; - defaultLockspace =3D NULL; tmp =3D pairs =3D virHashGetItems(lockDaemon->lockspaces, NULL, false); while (tmp && tmp->key) { @@ -737,9 +735,8 @@ virLockDaemonPreExecRestart(const char *state_file, tmp++; } - if (virJSONValueObjectAppend(object, "lockspaces", lockspaces) < 0) + if (virJSONValueObjectAppend(object, "lockspaces", &lockspaces) < 0) return -1; - lockspaces =3D NULL; if (!(magic =3D virLockDaemonGetExecRestartMagic())) return -1; diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c index ceffa6a368..cc0b96ea05 100644 --- a/src/logging/log_daemon.c +++ b/src/logging/log_daemon.c @@ -516,9 +516,8 @@ virLogDaemonPreExecRestart(const char *state_file, if (!(daemon =3D virNetDaemonPreExecRestart(dmn))) return -1; - if (virJSONValueObjectAppend(object, "daemon", daemon) < 0) + if (virJSONValueObjectAppend(object, "daemon", &daemon) < 0) return -1; - daemon =3D NULL; if (!(magic =3D virLogDaemonGetExecRestartMagic())) return -1; @@ -529,9 +528,8 @@ virLogDaemonPreExecRestart(const char *state_file, if (!(handler =3D virLogHandlerPreExecRestart(logDaemon->handler))) return -1; - if (virJSONValueObjectAppend(object, "handler", handler) < 0) + if (virJSONValueObjectAppend(object, "handler", &handler) < 0) return -1; - handler =3D NULL; if (!(state =3D virJSONValueToString(object, true))) return -1; diff --git a/src/logging/log_handler.c b/src/logging/log_handler.c index cacf9584cd..d649c4d132 100644 --- a/src/logging/log_handler.c +++ b/src/logging/log_handler.c @@ -647,9 +647,8 @@ virLogHandlerPreExecRestart(virLogHandlerPtr handler) file =3D NULL; } - if (virJSONValueObjectAppend(ret, "files", files) < 0) + if (virJSONValueObjectAppend(ret, "files", &files) < 0) return NULL; - files =3D NULL; return g_steal_pointer(&ret); } diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index 51b20848ce..d946e64ad6 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -610,7 +610,7 @@ nodeDeviceDefToMdevctlConfig(virNodeDeviceDefPtr def, c= har **buf) return -1; } - if (virJSONValueObjectAppend(json, "attrs", g_steal_pointer(&attri= butes)) < 0) + if (virJSONValueObjectAppend(json, "attrs", &attributes) < 0) return -1; } diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 3d88e701b2..1df51ba97b 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1097,9 +1097,8 @@ qemuBlockStorageSourceGetBlockdevGetCacheProps(virSto= rageSourcePtr src, NULL) < 0) return -1; - if (virJSONValueObjectAppend(props, "cache", cacheobj) < 0) + if (virJSONValueObjectAppend(props, "cache", &cacheobj) < 0) return -1; - cacheobj =3D NULL; return 0; } diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index c571fdecf7..5e8fdd0ff1 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -662,10 +662,9 @@ qemuFirmwareInterfaceFormat(virJSONValuePtr doc, if (virJSONValueObjectAppend(doc, "interface-types", - interfacesJSON) < 0) + &interfacesJSON) < 0) return -1; - interfacesJSON =3D NULL; return 0; } @@ -706,18 +705,15 @@ qemuFirmwareMappingFlashFormat(virJSONValuePtr mappin= g, if (virJSONValueObjectAppend(mapping, "executable", - executable) < 0) + &executable) < 0) return -1; - executable =3D NULL; if (virJSONValueObjectAppend(mapping, "nvram-template", - nvram_template) < 0) + &nvram_template) < 0) return -1; - nvram_template =3D NULL; - return 0; } @@ -778,10 +774,9 @@ qemuFirmwareMappingFormat(virJSONValuePtr doc, break; } - if (virJSONValueObjectAppend(doc, "mapping", mapping) < 0) + if (virJSONValueObjectAppend(doc, "mapping", &mapping) < 0) return -1; - mapping =3D NULL; return 0; } @@ -814,21 +809,18 @@ qemuFirmwareTargetFormat(virJSONValuePtr doc, return -1; } - if (virJSONValueObjectAppend(target, "machines", machines) < 0) + if (virJSONValueObjectAppend(target, "machines", &machines) < 0) return -1; - machines =3D NULL; - if (virJSONValueArrayAppend(targetsJSON, target) < 0) return -1; target =3D NULL; } - if (virJSONValueObjectAppend(doc, "targets", targetsJSON) < 0) + if (virJSONValueObjectAppend(doc, "targets", &targetsJSON) < 0) return -1; - targetsJSON =3D NULL; return 0; } @@ -850,10 +842,9 @@ qemuFirmwareFeatureFormat(virJSONValuePtr doc, if (virJSONValueObjectAppend(doc, "features", - featuresJSON) < 0) + &featuresJSON) < 0) return -1; - featuresJSON =3D NULL; return 0; } diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index f8c78d9093..924e03b4da 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -4554,9 +4554,8 @@ qemuMonitorJSONAddDeviceArgs(qemuMonitorPtr mon, if (!(cmd =3D qemuMonitorJSONMakeCommand("device_add", NULL))) goto cleanup; - if (virJSONValueObjectAppend(cmd, "arguments", args) < 0) + if (virJSONValueObjectAppend(cmd, "arguments", &args) < 0) goto cleanup; - args =3D NULL; /* obj owns reference to args now */ if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) goto cleanup; @@ -5572,9 +5571,8 @@ int qemuMonitorJSONSetBlockIoThrottle(qemuMonitorPtr = mon, NULL) < 0) goto cleanup; - if (virJSONValueObjectAppend(cmd, "arguments", args) < 0) + if (virJSONValueObjectAppend(cmd, "arguments", &args) < 0) goto cleanup; - args =3D NULL; /* obj owns reference to args now */ if (qemuMonitorJSONCommand(mon, cmd, &result) < 0) goto cleanup; @@ -5989,7 +5987,7 @@ qemuMonitorJSONMakeCPUModel(virCPUDefPtr cpu, goto error; } - if (virJSONValueObjectAppend(model, "props", props) < 0) + if (virJSONValueObjectAppend(model, "props", &props) < 0) goto error; } @@ -7470,9 +7468,8 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, addr =3D qemuMonitorJSONBuildInetSocketAddress(chr->data.tcp.host, chr->data.tcp.service= ); if (!addr || - virJSONValueObjectAppend(data, "addr", addr) < 0) + virJSONValueObjectAppend(data, "addr", &addr) < 0) goto cleanup; - addr =3D NULL; telnet =3D chr->data.tcp.protocol =3D=3D VIR_DOMAIN_CHR_TCP_PROTOC= OL_TELNET; @@ -7503,7 +7500,7 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, addr =3D qemuMonitorJSONBuildInetSocketAddress(host, chr->data.udp.connect= Service); if (!addr || - virJSONValueObjectAppend(data, "remote", addr) < 0) + virJSONValueObjectAppend(data, "remote", &addr) < 0) goto cleanup; host =3D chr->data.udp.bindHost; @@ -7515,10 +7512,9 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrI= D, port =3D ""; addr =3D qemuMonitorJSONBuildInetSocketAddress(host, port); if (!addr || - virJSONValueObjectAppend(data, "local", addr) < 0) + virJSONValueObjectAppend(data, "local", &addr) < 0) goto cleanup; } - addr =3D NULL; break; case VIR_DOMAIN_CHR_TYPE_UNIX: @@ -7526,9 +7522,8 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, addr =3D qemuMonitorJSONBuildUnixSocketAddress(chr->data.nix.path); if (!addr || - virJSONValueObjectAppend(data, "addr", addr) < 0) + virJSONValueObjectAppend(data, "addr", &addr) < 0) goto cleanup; - addr =3D NULL; if (chr->data.nix.listen && virJSONValueObjectAppendBoolean(data, "wait", false) < 0) @@ -7574,9 +7569,8 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, goto cleanup; if (virJSONValueObjectAppendString(backend, "type", backend_type) < 0 = || - virJSONValueObjectAppend(backend, "data", data) < 0) + virJSONValueObjectAppend(backend, "data", &data) < 0) goto cleanup; - data =3D NULL; if (!(ret =3D qemuMonitorJSONMakeCommand("chardev-add", "s:id", chrID, diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c index 6132615093..327540c4b4 100644 --- a/src/rpc/virnetdaemon.c +++ b/src/rpc/virnetdaemon.c @@ -404,16 +404,14 @@ virNetDaemonPreExecRestart(virNetDaemonPtr dmn) if (!srvJSON) goto error; - if (virJSONValueObjectAppend(srvObj, srvArray[i].key, srvJSON) < 0) + if (virJSONValueObjectAppend(srvObj, srvArray[i].key, &srvJSON) < = 0) goto error; - srvJSON =3D NULL; } virObjectUnlock(dmn); - if (virJSONValueObjectAppend(object, "servers", srvObj) < 0) + if (virJSONValueObjectAppend(object, "servers", &srvObj) < 0) return NULL; - srvObj =3D NULL; return g_steal_pointer(&object); diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c index ee402e8ea0..c2650ade09 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -590,9 +590,8 @@ virJSONValuePtr virNetServerPreExecRestart(virNetServer= Ptr srv) child =3D NULL; } - if (virJSONValueObjectAppend(object, "services", services) < 0) + if (virJSONValueObjectAppend(object, "services", &services) < 0) goto error; - services =3D NULL; for (i =3D 0; i < srv->nclients; i++) { g_autoptr(virJSONValue) child =3D NULL; @@ -604,9 +603,8 @@ virJSONValuePtr virNetServerPreExecRestart(virNetServer= Ptr srv) child =3D NULL; } - if (virJSONValueObjectAppend(object, "clients", clients) < 0) + if (virJSONValueObjectAppend(object, "clients", &clients) < 0) goto error; - clients =3D NULL; virObjectUnlock(srv); diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c index 0789ad9154..2bb3443287 100644 --- a/src/rpc/virnetserverclient.c +++ b/src/rpc/virnetserverclient.c @@ -610,16 +610,14 @@ virJSONValuePtr virNetServerClientPreExecRestart(virN= etServerClientPtr client) if (!(sock =3D virNetSocketPreExecRestart(client->sock))) goto error; - if (virJSONValueObjectAppend(object, "sock", sock) < 0) + if (virJSONValueObjectAppend(object, "sock", &sock) < 0) goto error; - sock =3D NULL; if (!(priv =3D client->privateDataPreExecRestart(client, client->priva= teData))) goto error; - if (virJSONValueObjectAppend(object, "privateData", priv) < 0) + if (virJSONValueObjectAppend(object, "privateData", &priv) < 0) goto error; - priv =3D NULL; virObjectUnlock(client); return g_steal_pointer(&object); diff --git a/src/rpc/virnetserverservice.c b/src/rpc/virnetserverservice.c index a72277226a..fece6305e8 100644 --- a/src/rpc/virnetserverservice.c +++ b/src/rpc/virnetserverservice.c @@ -357,9 +357,8 @@ virJSONValuePtr virNetServerServicePreExecRestart(virNe= tServerServicePtr svc) child =3D NULL; } - if (virJSONValueObjectAppend(object, "socks", socks) < 0) + if (virJSONValueObjectAppend(object, "socks", &socks) < 0) return NULL; - socks =3D NULL; return g_steal_pointer(&object); } diff --git a/src/util/virjson.c b/src/util/virjson.c index 7b52525797..5b3aa49a7f 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -298,7 +298,7 @@ virJSONValueObjectAddVArgs(virJSONValuePtr obj, return -1; } - if ((rc =3D virJSONValueObjectAppend(obj, key, *val)) =3D=3D 0) + if ((rc =3D virJSONValueObjectAppend(obj, key, val)) =3D=3D 0) *val =3D NULL; } break; @@ -320,9 +320,8 @@ virJSONValueObjectAddVArgs(virJSONValuePtr obj, if (!(jsonMap =3D virJSONValueNewArrayFromBitmap(map))) return -1; - if ((rc =3D virJSONValueObjectAppend(obj, key, jsonMap)) < 0) + if ((rc =3D virJSONValueObjectAppend(obj, key, &jsonMap)) < 0) return -1; - jsonMap =3D NULL; } break; default: @@ -616,9 +615,9 @@ virJSONValueObjectInsert(virJSONValuePtr object, int virJSONValueObjectAppend(virJSONValuePtr object, const char *key, - virJSONValuePtr value) + virJSONValuePtr *value) { - return virJSONValueObjectInsert(object, key, &value, false); + return virJSONValueObjectInsert(object, key, value, false); } @@ -679,9 +678,8 @@ virJSONValueObjectAppendNumberInt(virJSONValuePtr objec= t, { g_autoptr(virJSONValue) jvalue =3D virJSONValueNewNumberInt(number); - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -694,9 +692,8 @@ virJSONValueObjectAppendNumberUint(virJSONValuePtr obje= ct, { g_autoptr(virJSONValue) jvalue =3D virJSONValueNewNumberUint(number); - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -709,9 +706,8 @@ virJSONValueObjectAppendNumberLong(virJSONValuePtr obje= ct, { g_autoptr(virJSONValue) jvalue =3D virJSONValueNewNumberLong(number); - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -724,9 +720,8 @@ virJSONValueObjectAppendNumberUlong(virJSONValuePtr obj= ect, { g_autoptr(virJSONValue) jvalue =3D virJSONValueNewNumberUlong(number); - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -743,9 +738,8 @@ virJSONValueObjectAppendNumberDouble(virJSONValuePtr ob= ject, if (!jvalue) return -1; - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -758,9 +752,8 @@ virJSONValueObjectAppendBoolean(virJSONValuePtr object, { g_autoptr(virJSONValue) jvalue =3D virJSONValueNewBoolean(boolean_); - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -772,9 +765,8 @@ virJSONValueObjectAppendNull(virJSONValuePtr object, { g_autoptr(virJSONValue) jvalue =3D virJSONValueNewNull(); - if (virJSONValueObjectAppend(object, key, jvalue) < 0) + if (virJSONValueObjectAppend(object, key, &jvalue) < 0) return -1; - jvalue =3D NULL; return 0; } @@ -1583,7 +1575,7 @@ virJSONParserInsertValue(virJSONParserPtr parser, if (virJSONValueObjectAppend(state->value, state->key, - value) < 0) + &value) < 0) return -1; VIR_FREE(state->key); @@ -2093,7 +2085,7 @@ virJSONValueObjectDeflattenWorker(const char *key, return -1; } - if (virJSONValueObjectAppend(retobj, key, newval) < 0) + if (virJSONValueObjectAppend(retobj, key, &newval) < 0) return -1; newval =3D NULL; @@ -2111,9 +2103,10 @@ virJSONValueObjectDeflattenWorker(const char *key, } if (!(existobj =3D virJSONValueObjectGet(retobj, tokens[0]))) { - existobj =3D virJSONValueNewObject(); + virJSONValuePtr newobj =3D virJSONValueNewObject(); + existobj =3D newobj; - if (virJSONValueObjectAppend(retobj, tokens[0], existobj) < 0) + if (virJSONValueObjectAppend(retobj, tokens[0], &newobj) < 0) return -1; } else { diff --git a/src/util/virjson.h b/src/util/virjson.h index 4dc7ed1a2d..ca99ae3b70 100644 --- a/src/util/virjson.h +++ b/src/util/virjson.h @@ -69,7 +69,9 @@ virJSONValuePtr virJSONValueNewArray(void); virJSONValuePtr virJSONValueNewObject(void); virJSONValuePtr virJSONValueNewArrayFromBitmap(virBitmapPtr bitmap); -int virJSONValueObjectAppend(virJSONValuePtr object, const char *key, virJ= SONValuePtr value); +int virJSONValueObjectAppend(virJSONValuePtr object, + const char *key, + virJSONValuePtr *value); int virJSONValueArrayAppend(virJSONValuePtr object, virJSONValuePtr value); int virJSONValueArrayConcat(virJSONValuePtr a, virJSONValuePtr c); diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c index 1b6b51b649..9ba6e83251 100644 --- a/src/util/virlockspace.c +++ b/src/util/virlockspace.c @@ -460,9 +460,8 @@ virJSONValuePtr virLockSpacePreExecRestart(virLockSpace= Ptr lockspace) owner =3D NULL; } - if (virJSONValueObjectAppend(child, "owners", owners) < 0) + if (virJSONValueObjectAppend(child, "owners", &owners) < 0) goto error; - owners =3D NULL; if (virJSONValueArrayAppend(resources, child) < 0) goto error; @@ -471,9 +470,8 @@ virJSONValuePtr virLockSpacePreExecRestart(virLockSpace= Ptr lockspace) tmp++; } - if (virJSONValueObjectAppend(object, "resources", resources) < 0) + if (virJSONValueObjectAppend(object, "resources", &resources) < 0) goto error; - resources =3D NULL; virMutexUnlock(&lockspace->lock); return object; diff --git a/src/util/virmacmap.c b/src/util/virmacmap.c index 0d458d7b7b..521ab89b5b 100644 --- a/src/util/virmacmap.c +++ b/src/util/virmacmap.c @@ -224,9 +224,8 @@ virMACMapHashDumper(void *payload, } if (virJSONValueObjectAppendString(obj, "domain", name) < 0 || - virJSONValueObjectAppend(obj, "macs", arr) < 0) + virJSONValueObjectAppend(obj, "macs", &arr) < 0) return -1; - arr =3D NULL; if (virJSONValueArrayAppend(data, obj) < 0) return -1; --=20 2.29.2