提交 0234a275 编写于 作者: A Anya Harter 提交者: John Ferlan

qemu: Escape commas for qemuBuildSmartcardCommandLine

Add comma escaping for smartcard->data.cert.file[i] and
smartcard->data.cert.database.
Signed-off-by: NAnya Harter <aharter@redhat.com>
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
上级 97975bef
...@@ -8716,29 +8716,16 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager, ...@@ -8716,29 +8716,16 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
virBufferAddLit(&opt, "ccid-card-emulated,backend=certificates"); virBufferAddLit(&opt, "ccid-card-emulated,backend=certificates");
for (i = 0; i < VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES; i++) { for (i = 0; i < VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES; i++) {
if (strchr(smartcard->data.cert.file[i], ',')) { virBufferAsprintf(&opt, ",cert%zu=", i + 1);
virBufferFreeAndReset(&opt); virQEMUBuildBufferEscapeComma(&opt, smartcard->data.cert.file[i]);
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid certificate name: %s"),
smartcard->data.cert.file[i]);
return -1;
}
virBufferAsprintf(&opt, ",cert%zu=%s", i + 1,
smartcard->data.cert.file[i]);
} }
if (smartcard->data.cert.database) { 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 = smartcard->data.cert.database; database = smartcard->data.cert.database;
} else { } else {
database = VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE; database = VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE;
} }
virBufferAsprintf(&opt, ",db=%s", database); virBufferAddLit(&opt, ",db=");
virQEMUBuildBufferEscapeComma(&opt, database);
break; break;
case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH: case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
......
...@@ -22,7 +22,10 @@ bar=2/monitor.sock,server,nowait \ ...@@ -22,7 +22,10 @@ bar=2/monitor.sock,server,nowait \
-no-shutdown \ -no-shutdown \
-no-acpi \ -no-acpi \
-boot c \ -boot c \
-device usb-ccid,id=ccid0,bus=usb.0,port=1 \
-usb \ -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 \ -chardev tty,id=charserial0,path=/dev/ttyS2,,foo \
-device isa-serial,chardev=charserial0,id=serial0 \ -device isa-serial,chardev=charserial0,id=serial0 \
-chardev file,id=charserial1,path=/tmp/serial.log,,foo,append=on \ -chardev file,id=charserial1,path=/tmp/serial.log,,foo,append=on \
......
...@@ -31,5 +31,11 @@ ...@@ -31,5 +31,11 @@
<source path='/tmp/guestfwd,foo'/> <source path='/tmp/guestfwd,foo'/>
<target type='guestfwd' address='10.0.2.1' port='4600'/> <target type='guestfwd' address='10.0.2.1' port='4600'/>
</channel> </channel>
<smartcard mode='host-certificates'>
<certificate>cert1,foo</certificate>
<certificate>cert2</certificate>
<certificate>cert3</certificate>
<database>/etc/pki/nssdb,foo</database>
</smartcard>
</devices> </devices>
</domain> </domain>
...@@ -2764,7 +2764,8 @@ mymain(void) ...@@ -2764,7 +2764,8 @@ mymain(void)
QEMU_CAPS_SPICE, QEMU_CAPS_SPICE,
QEMU_CAPS_SPICE_UNIX, QEMU_CAPS_SPICE_UNIX,
QEMU_CAPS_DEVICE_ISA_SERIAL, 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("debug-threads", QEMU_CAPS_NAME_DEBUG_THREADS);
DO_TEST("master-key", QEMU_CAPS_OBJECT_SECRET); DO_TEST("master-key", QEMU_CAPS_OBJECT_SECRET);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册