From nobody Thu May 2 02:25:16 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 1522700280772938.3140707322291; Mon, 2 Apr 2018 13:18:00 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5D233804F6; Mon, 2 Apr 2018 20:17:59 +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 328FF7A23F; Mon, 2 Apr 2018 20:17:59 +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 E1B4E1808870; Mon, 2 Apr 2018 20:17:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w32KHwXO000959 for ; Mon, 2 Apr 2018 16:17:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1E3306046C; Mon, 2 Apr 2018 20:17:58 +0000 (UTC) Received: from mx1.redhat.com (ext-mx05.extmail.prod.ext.phx2.redhat.com [10.5.110.29]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 18B38601A2 for ; Mon, 2 Apr 2018 20:17:55 +0000 (UTC) Received: from mail-pl0-f54.google.com (mail-pl0-f54.google.com [209.85.160.54]) (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 0B02319CF75 for ; Mon, 2 Apr 2018 20:17:54 +0000 (UTC) Received: by mail-pl0-f54.google.com with SMTP id s24-v6so5609527plq.6 for ; Mon, 02 Apr 2018 13:17:54 -0700 (PDT) Received: from localhost.localdomain ([2405:204:2089:6e04:a00:27ff:fe0c:67b9]) by smtp.gmail.com with ESMTPSA id e10sm1947527pfn.67.2018.04.02.13.17.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 02 Apr 2018 13:17:52 -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=VET1UiVsRiIdZuMmRP5NGWyPIOVfwbs91LsAaJELIxc=; b=StQF2dkvdI9MmiYupnPN0FXPRWawRPTDHZ/tNqr2sH/A7m6eTWJ2GfWL2QTCwbQeZm yi0zVY/RYmzGCeD2l74utH7zlnIqPQ0v+4YWQk7uliSowhiha+Q138qvJQywzvqO24Q2 twSrloJgtWIbD7Rr2pixxigduvtcJMfN7b3QZo7JjKSx34arl+8DVYY+39EbiBwlkgau wvVk0mFZNOjqzWySrmi7qgvZOreT0Xvv7N6A1//5Fv/NaSkVQc3pIMySyTVuBgpbyF02 5fd+Yh1uQHIYoFSw9V/DJI7eQTtUGkFb3WBLkU6NrTc+/Zjmdzpmb2uvyuUY9WwanTbl 1QhQ== 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=VET1UiVsRiIdZuMmRP5NGWyPIOVfwbs91LsAaJELIxc=; b=JrJlPHyPumGjKyZfrdLgFR+zoYongTA//4GHKpnBJIG3ZZp9btFu6OTBsHzOePi05M QyW+W7sNkH5uxEZkECLxtAPFiL30c9x8j2rOXiNrU+vEeYcHYu8sqkjPRoULFtgGeNhu Opid4ngPP0tvcso7wRERx/S+7M1+4z96FRmAkKP6RIeR7De39APyhOXoXgO34Q5JSl3h KyDG4afaeI5nUrmdFY2dZ6oMMiDdlUxFySvwQmtHEP6fjHo+cmYKj9GV5h4+NpXW1VyH ZGkWUhVERCNh9gSDd3HCXovE6tzZ4fm7xs07guljCGXkCD6vvH5YhrlU/96PXlihjALO zlhQ== X-Gm-Message-State: AElRT7EUjTJxk4tvLQZTOzgNA7HrSwrUbdH9aFnls+HlXdTOShU1WOPV dJOLHhXN+jtwWgxbuAKRVYLeK8xR X-Google-Smtp-Source: AIpwx48K33oI4mUx64WWNkcj5I21S1FG44rnSG/RvD+ehVlK9XsRJ0L0N3GlaUA0992oKRxS5H2xvA== X-Received: by 2002:a17:902:bc41:: with SMTP id t1-v6mr11064230plz.56.1522700273247; Mon, 02 Apr 2018 13:17:53 -0700 (PDT) From: Sukrit Bhatnagar To: libvir-list@redhat.com Date: Tue, 3 Apr 2018 01:47:25 +0530 Message-Id: <20180402201725.13842-1-skrtbhtngr@gmail.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 02 Apr 2018 20:17:54 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 02 Apr 2018 20:17:54 +0000 (UTC) for IP:'209.85.160.54' DOMAIN:'mail-pl0-f54.google.com' HELO:'mail-pl0-f54.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) 209.85.160.54 mail-pl0-f54.google.com 209.85.160.54 mail-pl0-f54.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.29 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v3] 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 02 Apr 2018 20:17:59 +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 to properly escape commas in user provided data fields for qemu command line processing. Signed-off-by: Sukrit Bhatnagar --- Thank you for the helpful feedback and apologies for the delay. Changes in v3: virQEMUBuildBufferEscapeComma was applied to: - src->hosts->socket in qemuBuildNetworkDriveURI - src->path, src->configFile in qemuBuildNetworkDriveStr - disk->blkdeviotune.group_name in qemuBuildDiskThrottling - net->data.socket.address, net->data.socket.localaddr in qemuBuildHostNetStr - dev->data.file.path in qemuBuildChrChardevStr - graphics->data.spice.rendernode in qemuBuildGraphicsSPICECommandLine - smartcard->data.cert.file[i], smartcard->data.cert.database in qemuBuildSmartcardCommandLine Changes in v2: virQEMUBuildBufferEscapeComma was applied to: - 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 in qemuBuildDomainLoaderCommandLine Link to v2: https://www.redhat.com/archives/libvir-list/2018-March/msg00965= .html When I tried to change src->path in qemuBuildNetworkDriveStr for this portion 961 } else if (src->nhosts =3D=3D 1) { 962 if (virAsprintf(&ret, "sheepdog:%s:%u:%s", 963 src->hosts->name, src->hosts->port, 964 src->path) < 0) 965 goto cleanup; 966 } else { make check reported the following error. 141) QEMU XML-2-ARGV disk-drive-network-sheepdog ... In '/home/skrtbhtngr/libvirt/tests/qemuxml2argvdata/disk-drive-network-shee= pdog.args': Offset 0 Expect [LC_ALL=3DC PATH=3D/bin HOME=3D/home/test USER=3Dtest LOGNAME=3Dtest= QEMU_AUDIO_DRV=3Dnone /usr/bin/qemu-system-i686 -name QEMUGuest1 -S -M pc = -m 214 -smp 1,sockets=3D1,cores=3D1,threads=3D1 -uuid c7a5fdbd-edaf-9455-92= 6a-d65c16db1809 -nographic -nodefaults -chardev socket,id=3Dcharmonitor,pat= h=3D/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait -mon chardev= =3Dcharmonitor,id=3Dmonitor,mode=3Dreadline -no-acpi -boot c -usb -drive fi= le=3D/dev/HostVG/QEMU,,Guest,,,,1,format=3Draw,if=3Dnone,id=3Ddrive-ide0-0-= 0 -device ide-drive,bus=3Dide.0,unit=3D0,drive=3Ddrive-ide0-0-0,id=3Dide0-0= -0 -drive file=3Dsheepdog:example.org:6000:image,,with,,commas,format=3Draw= ,if=3Dnone,id=3Ddrive-virtio-disk0 -device virtio-blk-pci,bus=3Dpci.0,addr= =3D0x3,drive=3Ddrive-virtio-disk0,id=3Dvirtio-disk0 ] Actual [LC_ALL=3DC PATH=3D/bin HOME=3D/home/test USER=3Dtest LOGNAME=3Dtest= QEMU_AUDIO_DRV=3Dnone /usr/bin/qemu-system-i686 -name QEMUGuest1 -S -M pc = -m 214 -smp 1,sockets=3D1,cores=3D1,threads=3D1 -uuid c7a5fdbd-edaf-9455-92= 6a-d65c16db1809 -nographic -nodefaults -chardev socket,id=3Dcharmonitor,pat= h=3D/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait -mon chardev= =3Dcharmonitor,id=3Dmonitor,mode=3Dreadline -no-acpi -boot c -usb -drive fi= le=3D/dev/HostVG/QEMU,,Guest,,,,1,format=3Draw,if=3Dnone,id=3Ddrive-ide0-0-= 0 -device ide-drive,bus=3Dide.0,unit=3D0,drive=3Ddrive-ide0-0-0,id=3Dide0-0= -0 -drive file=3Dsheepdog:example.org:6000:image,,,,with,,,,commas,format= =3Draw,if=3Dnone,id=3Ddrive-virtio-disk0 -device virtio-blk-pci,bus=3Dpci.0= ,addr=3D0x3,drive=3Ddrive-virtio-disk0,id=3Dvirtio-disk0 ] ... F= AILED In disk-drive-network-sheepdog.args: ... -drive file=3Dsheepdog:example.org:6000:image,,with,,commas,format=3Dra= w,if=3Dnone,\ ... I was not quite sure how to handle this part. Adding=20 virQEMUBuildBufferEscapeComma there is escaping the twin commas=20 in the file name again. I have left that part unchanged. src/qemu/qemu_command.c | 111 +++++++++++++++++++++++++--------------------= --- 1 file changed, 59 insertions(+), 52 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6f76f18ab..26b36551c 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -844,14 +844,18 @@ qemuBuildNetworkDriveURI(virStorageSourcePtr src, qemuDomainSecretInfoPtr secinfo) { virURIPtr uri =3D NULL; - char *ret =3D NULL; + char *ret =3D NULL, *socket =3D NULL; + virBuffer buf =3D VIR_BUFFER_INITIALIZER; =20 if (!(uri =3D qemuBlockStorageSourceGetURI(src))) goto cleanup; =20 - if (src->hosts->socket && - virAsprintf(&uri->query, "socket=3D%s", src->hosts->socket) < 0) - goto cleanup; + if (src->hosts->socket) { + virQEMUBuildBufferEscapeComma(&buf, src->hosts->socket); + socket =3D virBufferContentAndReset(&buf); + if (virAsprintf(&uri->query, "socket=3D%s", socket) < 0) + goto cleanup; + } =20 if (qemuBuildGeneralSecinfoURI(uri, secinfo) < 0) goto cleanup; @@ -860,6 +864,8 @@ qemuBuildNetworkDriveURI(virStorageSourcePtr src, =20 cleanup: virURIFree(uri); + virBufferFreeAndReset(&buf); + return ret; } =20 @@ -868,8 +874,9 @@ static char * qemuBuildNetworkDriveStr(virStorageSourcePtr src, qemuDomainSecretInfoPtr secinfo) { - char *ret =3D NULL; + char *ret =3D NULL, *path =3D NULL, *file =3D NULL; virBuffer buf =3D VIR_BUFFER_INITIALIZER; + virBuffer bufTemp =3D VIR_BUFFER_INITIALIZER; size_t i; =20 switch ((virStorageNetProtocol) src->protocol) { @@ -914,8 +921,10 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, goto cleanup; } =20 - if (src->path) - virBufferAsprintf(&buf, ":exportname=3D%s", src->path); + if (src->path) { + virBufferAddLit(&buf, ":exportname=3D"); + virQEMUBuildBufferEscapeComma(&buf, src->path); + } =20 if (virBufferCheckError(&buf) < 0) goto cleanup; @@ -945,7 +954,9 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, } =20 if (src->nhosts =3D=3D 0) { - if (virAsprintf(&ret, "sheepdog:%s", src->path) < 0) + virQEMUBuildBufferEscapeComma(&bufTemp, src->path); + path =3D virBufferContentAndReset(&bufTemp); + if (virAsprintf(&ret, "sheepdog:%s", path) < 0) goto cleanup; } else if (src->nhosts =3D=3D 1) { if (virAsprintf(&ret, "sheepdog:%s:%u:%s", @@ -967,8 +978,9 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, src->path); goto cleanup; } - - virBufferStrcat(&buf, "rbd:", src->volume, "/", src->path, NUL= L); + virQEMUBuildBufferEscapeComma(&bufTemp, src->path); + path =3D virBufferContentAndReset(&bufTemp); + virBufferStrcat(&buf, "rbd:", src->volume, "/", path, NULL); =20 if (src->snapshot) virBufferEscape(&buf, '\\', ":", "@%s", src->snapshot); @@ -994,8 +1006,11 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, } } =20 - if (src->configFile) - virBufferEscape(&buf, '\\', ":", ":conf=3D%s", src->config= File); + if (src->configFile) { + virQEMUBuildBufferEscapeComma(&bufTemp, src->configFile); + file =3D virBufferContentAndReset(&bufTemp); + virBufferEscape(&buf, '\\', ":", ":conf=3D%s", file); + } =20 if (virBufferCheckError(&buf) < 0) goto cleanup; @@ -1022,6 +1037,7 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, } =20 cleanup: + virBufferFreeAndReset(&bufTemp); virBufferFreeAndReset(&buf); =20 return ret; @@ -1630,6 +1646,8 @@ qemuBuildDiskThrottling(virDomainDiskDefPtr disk, virBufferAsprintf(buf, ",throttling." _label "=3D%llu", \ disk->blkdeviotune._field); \ } + virBuffer bufTemp =3D VIR_BUFFER_INITIALIZER; + char *name =3D NULL; =20 IOTUNE_ADD(total_bytes_sec, "bps-total"); IOTUNE_ADD(read_bytes_sec, "bps-read"); @@ -1647,8 +1665,9 @@ qemuBuildDiskThrottling(virDomainDiskDefPtr disk, =20 IOTUNE_ADD(size_iops_sec, "iops-size"); if (disk->blkdeviotune.group_name) { - virBufferEscapeString(buf, ",throttling.group=3D%s", - disk->blkdeviotune.group_name); + virQEMUBuildBufferEscapeComma(&bufTemp, disk->blkdeviotune.group_n= ame); + name =3D virBufferContentAndReset(&bufTemp); + virBufferEscapeString(buf, ",throttling.group=3D%s", name); } =20 IOTUNE_ADD(total_bytes_sec_max_length, "bps-total-max-length"); @@ -1657,6 +1676,8 @@ qemuBuildDiskThrottling(virDomainDiskDefPtr disk, IOTUNE_ADD(total_iops_sec_max_length, "iops-total-max-length"); IOTUNE_ADD(read_iops_sec_max_length, "iops-read-max-length"); IOTUNE_ADD(write_iops_sec_max_length, "iops-write-max-length"); + + virBufferFreeAndReset(&bufTemp); #undef IOTUNE_ADD } =20 @@ -3651,27 +3672,25 @@ qemuBuildHostNetStr(virDomainNetDefPtr net, break; =20 case VIR_DOMAIN_NET_TYPE_SERVER: - virBufferAsprintf(&buf, "socket%clisten=3D%s:%d,", - type_sep, + virBufferAsprintf(&buf, "socket%clisten=3D", type_sep); + virQEMUBuildBufferEscapeComma(&buf, net->data.socket.address ? net->data.socket.addr= ess - : "", - net->data.socket.port); + : ""); + virBufferAsprintf(&buf, ":%d,", net->data.socket.port); break; =20 case VIR_DOMAIN_NET_TYPE_MCAST: - virBufferAsprintf(&buf, "socket%cmcast=3D%s:%d,", - type_sep, - net->data.socket.address, - net->data.socket.port); + virBufferAsprintf(&buf, "socket%cmcast=3D", type_sep); + virQEMUBuildBufferEscapeComma(&buf, net->data.socket.address); + virBufferAsprintf(&buf, ":%d,", net->data.socket.port); break; =20 case VIR_DOMAIN_NET_TYPE_UDP: - virBufferAsprintf(&buf, "socket%cudp=3D%s:%d,localaddr=3D%s:%d,", - type_sep, - net->data.socket.address, - net->data.socket.port, - net->data.socket.localaddr, - net->data.socket.localport); + virBufferAsprintf(&buf, "socket%cudp=3D", type_sep); + virQEMUBuildBufferEscapeComma(&buf, net->data.socket.address); + virBufferAsprintf(&buf, ":%d,localaddr=3D", net->data.socket.port); + virQEMUBuildBufferEscapeComma(&buf, net->data.socket.localaddr); + virBufferAsprintf(&buf, ":%d,", net->data.socket.localport); break; =20 case VIR_DOMAIN_NET_TYPE_USER: @@ -4954,9 +4973,10 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, bool chardevStdioLogd) { virBuffer buf =3D VIR_BUFFER_INITIALIZER; + virBuffer bufTemp =3D VIR_BUFFER_INITIALIZER; bool telnet; char *charAlias =3D NULL; - char *ret =3D NULL; + char *ret =3D NULL, *path =3D NULL; =20 if (!(charAlias =3D qemuAliasChardevFromDevAlias(alias))) goto cleanup; @@ -4990,9 +5010,11 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, _("append not supported in this QEMU binary")); goto cleanup; } + virQEMUBuildBufferEscapeComma(&bufTemp, dev->data.file.path); + path =3D virBufferContentAndReset(&bufTemp); if (qemuBuildChrChardevFileStr(chardevStdioLogd ? logManager : NUL= L, cmd, def, &buf, - "path", dev->data.file.path, + "path", path, "append", dev->data.file.append) < = 0) goto cleanup; break; @@ -8150,8 +8172,8 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfig= Ptr cfg, _("This QEMU doesn't support spice OpenGL r= endernode")); goto error; } - - virBufferAsprintf(&opt, "rendernode=3D%s,", graphics->data.spi= ce.rendernode); + virBufferAddLit(&opt, "rendernode=3D"); + virQEMUBuildBufferEscapeComma(&opt, graphics->data.spice.rende= rnode); } } =20 @@ -8771,7 +8793,6 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logMan= ager, virDomainSmartcardDefPtr smartcard; char *devstr; virBuffer opt =3D VIR_BUFFER_INITIALIZER; - const char *database; const char *contAlias =3D NULL; =20 if (!def->nsmartcards) @@ -8814,29 +8835,15 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logM= anager, =20 virBufferAddLit(&opt, "ccid-card-emulated,backend=3Dcertificates"); for (i =3D 0; i < VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES; i++) { - if (strchr(smartcard->data.cert.file[i], ',')) { - virBufferFreeAndReset(&opt); - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("invalid certificate name: %s"), - smartcard->data.cert.file[i]); - return -1; - } - virBufferAsprintf(&opt, ",cert%zu=3D%s", i + 1, - smartcard->data.cert.file[i]); + virBufferAsprintf(&opt, ",cert%zu=3D", i + 1); + virQEMUBuildBufferEscapeComma(&opt, smartcard->data.cert.file[= i]); } if (smartcard->data.cert.database) { - if (strchr(smartcard->data.cert.database, ',')) { - virBufferFreeAndReset(&opt); - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("invalid database name: %s"), - smartcard->data.cert.database); - return -1; - } - database =3D smartcard->data.cert.database; + virBufferAddLit(&opt, ",db=3D"); + virQEMUBuildBufferEscapeComma(&opt, smartcard->data.cert.datab= ase); } else { - database =3D VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE; + virBufferAsprintf(&opt, ",db=3D%s", VIR_DOMAIN_SMARTCARD_DEFAU= LT_DATABASE); } - virBufferAsprintf(&opt, ",db=3D%s", database); break; =20 case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH: --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list