qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 02/15] ui: convert common input code to keycodemapdb
Date: Fri, 11 Aug 2017 10:12:32 +0100	[thread overview]
Message-ID: <20170811091232.GC2554@redhat.com> (raw)
In-Reply-To: <5e2768ee-17e6-b33d-2787-ab9fb940615f@redhat.com>

On Thu, Aug 10, 2017 at 01:59:09PM -0500, Eric Blake wrote:
> On 08/10/2017 10:55 AM, Daniel P. Berrange wrote:
> > Replace the number_to_qcode, qcode_to_number and linux_to_qcode
> > tables with automatically generated tables.
> > 
> > Missing entries in linux_to_qcode now fixed:
> 
> > In additionsome fixes:
> 
> s/additionsome/addition, some/
> 
> > 
> >  - KEY_PLAYPAUSE now maps to Q_KEY_CODE_AUDIOPLAY, instead of
> >    KEY_PLAYCD. KEY_PLAYPAUSE is defined across almost all scancodes
> >    sets, while KEY_PLAYCD only appears in AT set1, so the former is
> >    a more useful mapping.
> > 
> > Missing entries in qcode_to_number now fixed:
> > 
> >   Q_KEY_CODE_AGAIN -> 0x85
> 
> I didn't research that these mappings are correct in relation to an
> official documentation, but trust that you have done due diligence.

As mentioned in the cover letter, I compared the original mapping
tables in QEMU to the new auto-generated ones. That is how I
identified these newly added entries. I also discovered certain
bugs in doing that, which I fixed in the keycodemapdb. 

> 
> > In addition some fixes:
> > 
> >  - Q_KEY_CODE_MENU was incorrectly mapped to the compose
> >    scancode (0xdd) and is now mapped to 0x9e
> >  - Q_KEY_CODE_FIND was mapped to 0xe065 (Search) instead
> >    of to 0xe041 (Find)
> >  - Q_KEY_CODE_HIRAGANA was mapped to 0x70 (Katakanahiragana)
> >    instead of of 0x77 (Hirigana)
> >  - Q_KEY_CODE_PRINT was mapped to 0xb7 which is not a defined
> >    scan code in AT set 1, it is now mapped to 0x54 (sysrq)
> > 
> 
> Are any of these fixes something we need in 2.10 (more likely, as manual
> fixes rather than via the git submodule)?  At this point, though, I'm
> inclined to say we're deep enough in freeze that if it is not a
> regression over 2.9 behavior, it's not worth rushing in the fix to 2.10.

These bugs have been present for several relesaes, so I'm not sure
its worth the effort to manually update the existing tables with
bug fixes.


> >  KEYCODEMAP_FILES = \
> > +		 ui/input-keymap-linux2qcode.c \
> > +		 ui/input-keymap-qcode2qnum.c \
> > +		 ui/input-keymap-qnum2qcode.c \
> 
> My comment on patch 1 complained about regex of [a-zA-Z0-9] - do any of
> the keycode names have digits, or can you shorten the regex to [a-zA-Z]?

Several ends with digits.

> 
> > -
> > -static int number_to_qcode[0x100];
> > +#include "ui/input-keymap-linux2qcode.c"
> > +#include "ui/input-keymap-qcode2qnum.c"
> > +#include "ui/input-keymap-qnum2qcode.c"
> >  
> >  int qemu_input_linux_to_qcode(unsigned int lnx)
> >  {
> > -    assert(lnx < KEY_CNT);
> > -    return linux_to_qcode[lnx];
> 
> The old code asserted on an out-of-range input,
> 
> > +    if (lnx >= qemu_input_map_linux2qcode_len) {
> > +        return 0;
> > +    }
> > +    return qemu_input_map_linux2qcode[lnx];
> 
> the new code returns 0.  I guess that's okay, though, since the
> generated table uses 0 for invalid entries, and there's no implicit
> reason why out-of-range input has to assert.

Using assert() for these mappings is really dangerous and could lead to
denial of service security bugs. I had kept asserts originally but then
found I was able to trigger asserts from VNC keyboard events, or monitor
send-key command by sending out of range scancodes. IOW VNC client could
crash QEMU. Fortunately the original code was not vulnerable to that,
only my patches, but I think it is better not to take that risk at all.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

  reply	other threads:[~2017-08-11  9:12 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-10 15:55 [Qemu-devel] [PATCH 00/15] Convert over to use keycodemapdb Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 01/15] ui: add keycodemapdb repository as a GIT submodule Daniel P. Berrange
2017-08-10 18:23   ` Eric Blake
2017-08-11  9:07     ` Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 02/15] ui: convert common input code to keycodemapdb Daniel P. Berrange
2017-08-10 18:59   ` Eric Blake
2017-08-11  9:12     ` Daniel P. Berrange [this message]
2017-08-10 15:55 ` [Qemu-devel] [PATCH 03/15] ui: convert key events to QKeyCodes immediately Daniel P. Berrange
2017-08-10 19:11   ` Eric Blake
2017-08-10 15:55 ` [Qemu-devel] [PATCH 04/15] ui: don't export qemu_input_event_new_key Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 05/15] ui: use QKeyCode exclusively in InputKeyEvent Daniel P. Berrange
2017-08-10 19:02   ` Eric Blake
2017-08-11  9:13     ` Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 06/15] input: convert virtio-input-hid device to keycodemapdb Daniel P. Berrange
2017-08-21 13:49   ` Gerd Hoffmann
2017-08-30 16:01     ` Daniel P. Berrange
2017-09-01  7:10       ` Gerd Hoffmann
2017-08-10 15:55 ` [Qemu-devel] [PATCH 07/15] input: convert ps2 " Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 08/15] input: convert the adb " Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 09/15] char: convert the escc " Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 10/15] ui: convert cocoa frontend " Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 11/15] ui: convert the SDL2 " Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 12/15] ui: convert GTK and SDL1 frontends " Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 13/15] ui: remove qemu_input_qcode_to_number method Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 14/15] ui: remove qemu_input_linux_to_qcode method Daniel P. Berrange
2017-08-10 15:55 ` [Qemu-devel] [PATCH 15/15] display: convert XenInput keyboard to keycodemapdb Daniel P. Berrange
2017-08-10 16:10 ` [Qemu-devel] [PATCH 00/15] Convert over to use keycodemapdb no-reply
2017-08-10 16:59   ` Daniel P. Berrange
2017-08-10 16:11 ` no-reply
2017-08-10 16:11 ` no-reply
2017-08-10 16:12 ` no-reply
2017-08-21 13:53 ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170811091232.GC2554@redhat.com \
    --to=berrange@redhat.com \
    --cc=eblake@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).