From nobody Fri Nov 14 03:51:12 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1584480047; cv=none; d=zohomail.com; s=zohoarc; b=Y2hMVsEc/PrmbgmP3gF0CSdRFLGM1iJ09DoSoOKdiFonG2YY3jdGktx2F4TxsWRj8KTw3OQoAx+Ru7GyziJHElUgGMMjVHwsjvoMfTdRHJmoCkjR8ErhGBycvmrIeTCA4pNzC9FHElYWEcAWRQgQohLrRKQq0dL1acEObbVyfOY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584480047; h=Content-Type:Content-Transfer-Encoding:Cc: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=O8GmbqSh3ezRn1NFaS+ndpRqNAtKDr0pi8ONRoKBSgk=; b=gpRu+QBng7/1JZfn9erAAzQNotVjHXxshCAtwndMRmgcYdWABIh7xLDsqtyqLuR9ZmP4ohQVO9FyrRU97+RBNqJS+hlsrKNg3i30Jm/ruIVfEV4ipANAyMYGVSheNrWwW0cTWVcOsmetyKx+csfEuH83gjQr9i18lcev47/JOX4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1584480047653771.225649116233; Tue, 17 Mar 2020 14:20:47 -0700 (PDT) Received: from localhost ([::1]:41636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jEJdm-0003Wc-HT for importer@patchew.org; Tue, 17 Mar 2020 17:20:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51480) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jEJL9-0002pA-KJ for qemu-devel@nongnu.org; Tue, 17 Mar 2020 17:01:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jEJL4-0002en-8J for qemu-devel@nongnu.org; Tue, 17 Mar 2020 17:01:30 -0400 Received: from us-smtp-delivery-74.mimecast.com ([63.128.21.74]:34474) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jEJL4-0002Zr-0g for qemu-devel@nongnu.org; Tue, 17 Mar 2020 17:01:26 -0400 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-174-Hhif-pAuPXacuDXq7veM5Q-1; Tue, 17 Mar 2020 17:01:24 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2AEC3107ACC4 for ; Tue, 17 Mar 2020 21:01:23 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-130.ams2.redhat.com [10.36.112.130]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AC8FC7E31B; Tue, 17 Mar 2020 21:01:22 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 86E261135234; Tue, 17 Mar 2020 22:01:15 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1584478885; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=O8GmbqSh3ezRn1NFaS+ndpRqNAtKDr0pi8ONRoKBSgk=; b=J+mbOPtkYesqbX79EwFNp6xAnuDwAFDSRw0HgdOx37o4glhO0aHdqPzpCHOdqW9t5yRo8y 5sfK14/xsReVEIJeEHX9aaqgcz3kKvN6uw3kUwJfOnvuMtSSWWkO+HqpIpIM26qvAXS//X LOvs8Pbvy3JS4jKDGx0NPD73omZleqU= X-MC-Unique: Hhif-pAuPXacuDXq7veM5Q-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PULL 24/30] qapi: Simplify how qmp_dispatch() gets the request ID Date: Tue, 17 Mar 2020 22:01:09 +0100 Message-Id: <20200317210115.8864-25-armbru@redhat.com> In-Reply-To: <20200317210115.8864-1-armbru@redhat.com> References: <20200317210115.8864-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 63.128.21.74 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" We convert the request object to a QDict twice: first in qmp_dispatch() to get the request ID, and then again in qmp_dispatch_check_obj(), which converts to QDict, then checks and returns it. We can't get the request ID from the latter, because it's null when the qdict flunks the checks. Move the checked conversion to QDict from qmp_dispatch_check_obj() to qmp_dispatch(), and drop the duplicate there. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Message-Id: <20200317115459.31821-24-armbru@redhat.com> --- qapi/qmp-dispatch.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c index 550d1fe8d2..91e50fa0dd 100644 --- a/qapi/qmp-dispatch.c +++ b/qapi/qmp-dispatch.c @@ -19,20 +19,13 @@ #include "sysemu/runstate.h" #include "qapi/qmp/qbool.h" =20 -static QDict *qmp_dispatch_check_obj(const QObject *request, bool allow_oo= b, +static QDict *qmp_dispatch_check_obj(QDict *dict, bool allow_oob, Error **errp) { const char *exec_key =3D NULL; const QDictEntry *ent; const char *arg_name; const QObject *arg_obj; - QDict *dict; - - dict =3D qobject_to(QDict, request); - if (!dict) { - error_setg(errp, "QMP input must be a JSON object"); - return NULL; - } =20 for (ent =3D qdict_first(dict); ent; ent =3D qdict_next(dict, ent)) { @@ -103,13 +96,21 @@ QDict *qmp_dispatch(QmpCommandList *cmds, QObject *req= uest, const char *command; QDict *args; QmpCommand *cmd; - QDict *dict =3D qobject_to(QDict, request); - QObject *id =3D dict ? qdict_get(dict, "id") : NULL; + QDict *dict; + QObject *id; QObject *ret =3D NULL; QDict *rsp =3D NULL; =20 - dict =3D qmp_dispatch_check_obj(request, allow_oob, &err); + dict =3D qobject_to(QDict, request); if (!dict) { + id =3D NULL; + error_setg(&err, "QMP input must be a JSON object"); + goto out; + } + + id =3D qdict_get(dict, "id"); + + if (!qmp_dispatch_check_obj(dict, allow_oob, &err)) { goto out; } =20 --=20 2.21.1