Skip to content

Commit

Permalink
input: mouse_set should check input device type.
Browse files Browse the repository at this point in the history
Otherwise, the index of an input device like a usb-kbd is silently accepted.

(qemu) info mice
  Mouse #2: QEMU PS/2 Mouse
* Mouse #3: QEMU HID Mouse
(qemu) mouse_set 1
(qemu) info mice
  Mouse #2: QEMU PS/2 Mouse
* Mouse #3: QEMU HID Mouse

Also replace monitor_printf() call in do_mouse_set() with error_report() and
adjust error message.

Signed-off-by: Hani Benhabiles <hani@linux.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
kroosec authored and kraxel committed Apr 1, 2014
1 parent e82597f commit 0419f78
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions ui/input.c
Expand Up @@ -342,15 +342,21 @@ void do_mouse_set(Monitor *mon, const QDict *qdict)
int found = 0;

QTAILQ_FOREACH(s, &handlers, node) {
if (s->id == index) {
found = 1;
qemu_input_handler_activate(s);
break;
if (s->id != index) {
continue;
}
if (!(s->handler->mask & (INPUT_EVENT_MASK_REL |
INPUT_EVENT_MASK_ABS))) {
error_report("Input device '%s' is not a mouse", s->handler->name);
return;
}
found = 1;
qemu_input_handler_activate(s);
break;
}

if (!found) {
monitor_printf(mon, "Mouse at given index not found\n");
error_report("Mouse at index '%d' not found", index);
}

qemu_input_check_mode_change();
Expand Down

0 comments on commit 0419f78

Please sign in to comment.