Re: [libvirt] [PATCH 3/4] qemu: Escape commas for qemuBuildSmartcardCommandLine

2018-06-18 Thread John Ferlan



On 06/18/2018 01:57 PM, Anya Harter wrote:
> Add comma escaping for smartcard->data.cert.file[i] and
> smartcard->data.cert.database.
> 
> Signed-off-by: Anya Harter 
> ---
>  src/qemu/qemu_command.c | 21 -
>  tests/qemuxml2argvdata/name-escape.args |  3 +++
>  tests/qemuxml2argvdata/name-escape.xml  |  6 ++
>  tests/qemuxml2argvtest.c|  3 ++-
>  4 files changed, 15 insertions(+), 18 deletions(-)
> 

Reviewed-by: John Ferlan 

John

(and pushed)

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 3/4] qemu: Escape commas for qemuBuildSmartcardCommandLine

2018-06-18 Thread Anya Harter
Add comma escaping for smartcard->data.cert.file[i] and
smartcard->data.cert.database.

Signed-off-by: Anya Harter 
---
 src/qemu/qemu_command.c | 21 -
 tests/qemuxml2argvdata/name-escape.args |  3 +++
 tests/qemuxml2argvdata/name-escape.xml  |  6 ++
 tests/qemuxml2argvtest.c|  3 ++-
 4 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 40e8f8fccf..a9a5e200e9 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8716,29 +8716,16 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr 
logManager,
 
 virBufferAddLit(, "ccid-card-emulated,backend=certificates");
 for (i = 0; i < VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES; i++) {
-if (strchr(smartcard->data.cert.file[i], ',')) {
-virBufferFreeAndReset();
-virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-   _("invalid certificate name: %s"),
-   smartcard->data.cert.file[i]);
-return -1;
-}
-virBufferAsprintf(, ",cert%zu=%s", i + 1,
-  smartcard->data.cert.file[i]);
+virBufferAsprintf(, ",cert%zu=", i + 1);
+virQEMUBuildBufferEscapeComma(, smartcard->data.cert.file[i]);
 }
 if (smartcard->data.cert.database) {
-if (strchr(smartcard->data.cert.database, ',')) {
-virBufferFreeAndReset();
-virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-   _("invalid database name: %s"),
-   smartcard->data.cert.database);
-return -1;
-}
 database = smartcard->data.cert.database;
 } else {
 database = VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE;
 }
-virBufferAsprintf(, ",db=%s", database);
+virBufferAddLit(, ",db=");
+virQEMUBuildBufferEscapeComma(, database);
 break;
 
 case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
diff --git a/tests/qemuxml2argvdata/name-escape.args 
b/tests/qemuxml2argvdata/name-escape.args
index 35a13b2533..d3b908a7e6 100644
--- a/tests/qemuxml2argvdata/name-escape.args
+++ b/tests/qemuxml2argvdata/name-escape.args
@@ -22,7 +22,10 @@ bar=2/monitor.sock,server,nowait \
 -no-shutdown \
 -no-acpi \
 -boot c \
+-device usb-ccid,id=ccid0,bus=usb.0,port=1 \
 -usb \
+-device ccid-card-emulated,backend=certificates,cert1=cert1,,foo,cert2=cert2,\
+cert3=cert3,db=/etc/pki/nssdb,,foo,id=smartcard0,bus=ccid0.0 \
 -chardev tty,id=charserial0,path=/dev/ttyS2,,foo \
 -device isa-serial,chardev=charserial0,id=serial0 \
 -chardev file,id=charserial1,path=/tmp/serial.log,,foo,append=on \
diff --git a/tests/qemuxml2argvdata/name-escape.xml 
b/tests/qemuxml2argvdata/name-escape.xml
index 79c1b34458..9ca7be5968 100644
--- a/tests/qemuxml2argvdata/name-escape.xml
+++ b/tests/qemuxml2argvdata/name-escape.xml
@@ -31,5 +31,11 @@
   
   
 
+
+  cert1,foo
+  cert2
+  cert3
+  /etc/pki/nssdb,foo
+
   
 
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 3e02fa576c..7468537c68 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -2762,7 +2762,8 @@ mymain(void)
 QEMU_CAPS_SPICE,
 QEMU_CAPS_SPICE_UNIX,
 QEMU_CAPS_DEVICE_ISA_SERIAL,
-QEMU_CAPS_CHARDEV_FILE_APPEND);
+QEMU_CAPS_CHARDEV_FILE_APPEND,
+QEMU_CAPS_CCID_EMULATED);
 DO_TEST("debug-threads", QEMU_CAPS_NAME_DEBUG_THREADS);
 
 DO_TEST("master-key", QEMU_CAPS_OBJECT_SECRET);
-- 
2.17.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list