From: Daniel P. Berrange Date: Thu, 25 Aug 2011 16:48:25 +0000 (+0100) Subject: Detect errors from the 'sendkey' command X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=6b434da6bfa00ddfd525dfbdf9234ca365e2044b;p=libvirt.git Detect errors from the 'sendkey' command On success, the 'sendkey' command does not return any data, so any data in the reply should be considered to be an error message * src/qemu/qemu_monitor_text.c: Treat non-"" reply data as an error message for 'sendkey' command --- diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 54541cec7e..4bd761d72b 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -2848,6 +2848,7 @@ int qemuMonitorTextSendKey(qemuMonitorPtr mon, int i; virBuffer buf = VIR_BUFFER_INITIALIZER; char *cmd, *reply = NULL; + int ret = -1; if (nkeycodes > VIR_DOMAIN_SEND_KEY_MAX_KEYS || nkeycodes == 0) return -1; @@ -2880,13 +2881,21 @@ int qemuMonitorTextSendKey(qemuMonitorPtr mon, qemuReportError(VIR_ERR_OPERATION_FAILED, _("failed to send key using command '%s'"), cmd); - VIR_FREE(cmd); - return -1; + goto cleanup; + } + + if (STRNEQ(reply, "")) { + qemuReportError(VIR_ERR_OPERATION_FAILED, + _("failed to send key '%s'"), reply); + goto cleanup; } + ret = 0; + +cleanup: VIR_FREE(cmd); VIR_FREE(reply); - return 0; + return ret; } /* Returns -1 on error, -2 if not supported */