From nobody Fri May 3 03:18:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1521219804719470.39934048955456; Fri, 16 Mar 2018 10:03:24 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 13CD980083; Fri, 16 Mar 2018 17:02:54 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C1F145D70A; Fri, 16 Mar 2018 17:02:51 +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 8D5174CA99; Fri, 16 Mar 2018 17:02:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w2GH2kTD019336 for ; Fri, 16 Mar 2018 13:02:46 -0400 Received: by smtp.corp.redhat.com (Postfix) id 830745D75D; Fri, 16 Mar 2018 17:02:46 +0000 (UTC) Received: from mx1.redhat.com (ext-mx03.extmail.prod.ext.phx2.redhat.com [10.5.110.27]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7A6675D757 for ; Fri, 16 Mar 2018 17:02:45 +0000 (UTC) Received: from mail-pg0-f66.google.com (mail-pg0-f66.google.com [74.125.83.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 48A047FDE9 for ; Fri, 16 Mar 2018 17:02:44 +0000 (UTC) Received: by mail-pg0-f66.google.com with SMTP id t186so4299650pgc.4 for ; Fri, 16 Mar 2018 10:02:44 -0700 (PDT) Received: from localhost.localdomain ([2405:204:a8:8a16:a00:27ff:fe0c:67b9]) by smtp.gmail.com with ESMTPSA id g15sm13321252pgv.61.2018.03.16.10.02.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 16 Mar 2018 10:02:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=CWKITGxEvouGc3cQk4hJHBqEGhAfJmf7T/7MmciDiuA=; b=qetn1l1ytIIZakEEtcAQzRVe85npavvMpNXSKWbv9ySQHPkam1zEEAoWqh5rtk3FXn Bot+sZz3zCCCd9yLBknUQxETqV4caFjsqU1Z8XVGh60zfDKVGAtGP9WEfo7QK3qucYcI +Uhxskp/tj0YtNpwZKCjtAKn3Qt8EIeqqz/wdNwUmt/SgGstNglhzc7aktFCIi93jHMX JVtuynn50KIJOtXuMk2aZJfkkZxU/LwEMRZq2nelxaV0acepivGXlfyibF5WJ2CHWxho DACB6Y1HdHPIsG/gwOC399D6ElVVDo9lF7njNWVUrt0x0WnyLIycxycTE6R1B/fcsWDH d9Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=CWKITGxEvouGc3cQk4hJHBqEGhAfJmf7T/7MmciDiuA=; b=XnzqU8hzpZGHNzJ2d8BeXY3+smOcG1g1iZuTxRwh1D7ezUhxeHG9Bu1jmt/SRobOJV 1u/N7saXbui2sJrmRBadk61qOw7/5XRhioadYM8CuMZuezwQlVNYUhh/Hclx3D3w52gu znH73lVB1Y3IYbBRrONs93S+0OZWl6297CI/BxOX1eLxKkOMxGdr9UhPDcKfu2mfw0E5 iIFMhX8TvkGvSi4i54pxBwnX4NkKYcLUofiu7zRSKyKb2iuTOogA0YYj7ELoOz8etkOR ZU9jBVDWwmOU9yBlWiIOIJVBidiE50Pz0m2TCk7C1hwsHnqEWfJc/ZUV8Wb8UKracCmk IoMQ== X-Gm-Message-State: AElRT7Ea2jqo5caWwU/gz3dDVAdq9ahHoJXJO65/7vBWISEXXHRw6/zV Z9bgqF8HBAn89GDI/qwLp4X0OAg1 X-Google-Smtp-Source: AG47ELutq/xh+q/SwJFdsDaDJHXztiXc25oZJ3XN8EaZSXEaYDsvDcRu6L+UF4gTVrnfdx5aO+2B3A== X-Received: by 10.98.78.68 with SMTP id c65mr2154673pfb.65.1521219763313; Fri, 16 Mar 2018 10:02:43 -0700 (PDT) From: Sukrit Bhatnagar To: libvir-list@redhat.com Date: Fri, 16 Mar 2018 22:32:35 +0530 Message-Id: <20180316170235.11109-1-skrtbhtngr@gmail.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Fri, 16 Mar 2018 17:02:44 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Fri, 16 Mar 2018 17:02:44 +0000 (UTC) for IP:'74.125.83.66' DOMAIN:'mail-pg0-f66.google.com' HELO:'mail-pg0-f66.google.com' FROM:'skrtbhtngr@gmail.com' RCPT:'' X-RedHat-Spam-Score: -0.13 (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_PASS) 74.125.83.66 mail-pg0-f66.google.com 74.125.83.66 mail-pg0-f66.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.27 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH] qemu: add virQEMUBuildBufferEscapeComma in qemu_command.c 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 16 Mar 2018 17:02:55 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch adds virQEMUBuildBufferEscapeComma wherever applicable in src/qe= mu/qemu_command.c Based on: https://wiki.libvirt.org/page/BiteSizedTasks#qemu:_Use_comma_esca= ping_for_more_command_line_values Signed-off-by: Sukrit Bhatnagar --- This patch is submitted towards my proposal for GSoC'18. Changes made: - info->romfile in qemuBuildRomStr - disk->vendor, disk->product in qemuBuildDriveDevStr - fs->src->path in qemuBuildFSStr - fs->dst in qemuBuildFSDevStr - connect=3D in qemuBuildHostNetStr - fileval handling in qemuBuildChrChardevStr - TYPE_DEV, TYPE_PIPE handling in qemuBuildChrChardevStr - cfg->vncTLSx509certdir in qemuBuildGraphicsVNCCommandLine - cfg->spiceTLSx509certdir in qemuBuildGraphicsSPICECommandLine - loader->path, loader->nvram usage qemuBuildDomainLoaderCommandLine Places where no changes were made: - src->hosts->socket in qemuBuildNetworkDriveURI uses virAsprintf not virBu= fferAsprintf; src->path, src->configFile are not used - qemuBuildChrArgStr function does not exist - not applicable on data.nix.path in qemuBuildVhostuserCommandLine - converting places that use strchr in qemuBuildSmartcardCommandLine to use= virBufferEscape I have run `make check VIR_TEST_EXPENSIVE=3D1`, `make syntax-check` and `ma= ke -C tests valgrind`. Some tests fail on my system, even for an unmodified clone of the repo. But, all the tests which were passed by the unmodified clone were passed af= ter I made these changes. As always, your feedback is welcome! src/qemu/qemu_command.c | 73 +++++++++++++++++++++++++++++-----------------= --- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index fa0aa5d5c..06f4f72fc 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -474,8 +474,10 @@ qemuBuildRomStr(virBufferPtr buf, default: break; } - if (info->romfile) - virBufferAsprintf(buf, ",romfile=3D%s", info->romfile); + if (info->romfile) { + virBufferAddLit(buf, ",romfile=3D"); + virQEMUBuildBufferEscapeComma(buf, info->romfile); + } } return 0; } @@ -2177,11 +2179,15 @@ qemuBuildDriveDevStr(const virDomainDef *def, virBufferAsprintf(&opt, ",wwn=3D0x%s", disk->wwn); } =20 - if (disk->vendor) - virBufferAsprintf(&opt, ",vendor=3D%s", disk->vendor); + if (disk->vendor) { + virBufferAddLit(&opt, ",vendor=3D"); + virQEMUBuildBufferEscapeComma(&opt, disk->vendor); + } =20 - if (disk->product) - virBufferAsprintf(&opt, ",product=3D%s", disk->product); + if (disk->product) { + virBufferAddLit(&opt, ",product=3D"); + virQEMUBuildBufferEscapeComma(&opt, disk->product); + } =20 if (disk->bus =3D=3D VIR_DOMAIN_DISK_BUS_USB) { if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_USB_STORAGE_REMOVABLE)) { @@ -2418,7 +2424,8 @@ qemuBuildFSStr(virDomainFSDefPtr fs, } =20 virBufferAsprintf(&opt, ",id=3D%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info= .alias); - virBufferAsprintf(&opt, ",path=3D%s", fs->src->path); + virBufferAddLit(&opt, ",path=3D"); + virQEMUBuildBufferEscapeComma(&opt, fs->src->path); =20 if (fs->readonly) { if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV_READONLY)) { @@ -2463,7 +2470,8 @@ qemuBuildFSDevStr(const virDomainDef *def, virBufferAsprintf(&opt, ",id=3D%s", fs->info.alias); virBufferAsprintf(&opt, ",fsdev=3D%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias); - virBufferAsprintf(&opt, ",mount_tag=3D%s", fs->dst); + virBufferAddLit(&opt, ",mount_tag=3D"); + virQEMUBuildBufferEscapeComma(&opt, fs->dst); =20 if (qemuBuildVirtioOptionsStr(&opt, fs->virtio, qemuCaps) < 0) goto error; @@ -3603,10 +3611,9 @@ qemuBuildHostNetStr(virDomainNetDefPtr net, break; =20 case VIR_DOMAIN_NET_TYPE_CLIENT: - virBufferAsprintf(&buf, "socket%cconnect=3D%s:%d,", - type_sep, - net->data.socket.address, - net->data.socket.port); + virBufferAsprintf(&buf, "socket%cconnect=3D", type_sep); + virQEMUBuildBufferEscapeComma(&buf, net->data.socket.address); + virBufferAsprintf(&buf, ":%d,", net->data.socket.port); break; =20 case VIR_DOMAIN_NET_TYPE_SERVER: @@ -4858,7 +4865,8 @@ qemuBuildChrChardevFileStr(virLogManagerPtr logManage= r, virBufferAsprintf(buf, ",%s=3D%s,%s=3Don", filearg, fdpath, append= arg); VIR_FREE(fdpath); } else { - virBufferAsprintf(buf, ",%s=3D%s", filearg, fileval); + virBufferAsprintf(buf, ",%s=3D", filearg); + virQEMUBuildBufferEscapeComma(buf, fileval); if (appendval !=3D VIR_TRISTATE_SWITCH_ABSENT) { virBufferAsprintf(buf, ",%s=3D%s", appendarg, virTristateSwitchTypeToString(appendval)); @@ -4916,9 +4924,10 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, break; =20 case VIR_DOMAIN_CHR_TYPE_DEV: - virBufferAsprintf(&buf, "%s,id=3D%s,path=3D%s", + virBufferAsprintf(&buf, "%s,id=3D%s,path=3D", STRPREFIX(alias, "parallel") ? "parport" : "tty", - charAlias, dev->data.file.path); + charAlias); + virQEMUBuildBufferEscapeComma(&buf, dev->data.file.path); break; =20 case VIR_DOMAIN_CHR_TYPE_FILE: @@ -4938,8 +4947,8 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, break; =20 case VIR_DOMAIN_CHR_TYPE_PIPE: - virBufferAsprintf(&buf, "pipe,id=3D%s,path=3D%s", charAlias, - dev->data.file.path); + virBufferAsprintf(&buf, "pipe,id=3D%s,path=3D", charAlias); + virQEMUBuildBufferEscapeComma(&buf, dev->data.file.path); break; =20 case VIR_DOMAIN_CHR_TYPE_STDIO: @@ -7829,10 +7838,13 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfig= Ptr cfg, =20 if (cfg->vncTLS) { virBufferAddLit(&opt, ",tls"); - if (cfg->vncTLSx509verify) - virBufferAsprintf(&opt, ",x509verify=3D%s", cfg->vncTLSx509cer= tdir); - else - virBufferAsprintf(&opt, ",x509=3D%s", cfg->vncTLSx509certdir); + if (cfg->vncTLSx509verify) { + virBufferAddLit(&opt, ",x509verify=3D"); + virQEMUBuildBufferEscapeComma(&opt, cfg->vncTLSx509certdir); + } else { + virBufferAddLit(&opt, ",x509=3D"); + virQEMUBuildBufferEscapeComma(&opt, cfg->vncTLSx509certdir); + } } =20 if (cfg->vncSASL) { @@ -7977,8 +7989,11 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfi= gPtr cfg, !cfg->spicePassword) virBufferAddLit(&opt, "disable-ticketing,"); =20 - if (hasSecure) - virBufferAsprintf(&opt, "x509-dir=3D%s,", cfg->spiceTLSx509certdir= ); + if (hasSecure) { + virBufferAddLit(&opt, "x509-dir=3D"); + virQEMUBuildBufferEscapeComma(&opt, cfg->spiceTLSx509certdir); + virBufferAddLit(&opt, ","); + } =20 switch (graphics->data.spice.defaultMode) { case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_SECURE: @@ -9463,9 +9478,9 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, NULL); } =20 - virBufferAsprintf(&buf, - "file=3D%s,if=3Dpflash,format=3Draw,unit=3D%d", - loader->path, unit); + virBufferAddLit(&buf, "file=3D"); + virQEMUBuildBufferEscapeComma(&buf, loader->path); + virBufferAsprintf(&buf, ",if=3Dpflash,format=3Draw,unit=3D%d", uni= t); unit++; =20 if (loader->readonly) { @@ -9478,9 +9493,9 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, =20 if (loader->nvram) { virBufferFreeAndReset(&buf); - virBufferAsprintf(&buf, - "file=3D%s,if=3Dpflash,format=3Draw,unit=3D%= d", - loader->nvram, unit); + virBufferAddLit(&buf, "file=3D"); + virQEMUBuildBufferEscapeComma(&buf, loader->nvram); + virBufferAsprintf(&buf, ",if=3Dpflash,format=3Draw,unit=3D%d",= unit); =20 virCommandAddArg(cmd, "-drive"); virCommandAddArgBuffer(cmd, &buf); --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list