[virt-tools-list] [PATCH virt-viewer v3 3/3] app: Check validity of hotkey

Pavel Grunt pgrunt at redhat.com
Thu Jun 2 09:07:21 UTC 2016


On Thu, 2016-06-02 at 09:39 +0200, Fabiano Fidêncio wrote:
> On Tue, May 31, 2016 at 11:01 AM, Pavel Grunt <pgrunt at redhat.com> wrote:
> > The hotkey is valid if it has a valid value. The value is valid if it is
> > not empty and is successfully parsed by gtk_accelerator_parse().
> > 
> > These hotkeys formats are considered invalid:
> >  "key" - missing value
> >  "key=" - missing value
> >  "key=abcd" - value cannot be parsed by gtk_accelerator_parse()
> > 
> > Resolves: rhbz#1339572
> > ---
> >  src/virt-viewer-app.c | 13 +++++++++----
> >  tests/test-hotkeys.c  | 10 +++++++++-
> >  2 files changed, 18 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
> > index d449f72..c320d38 100644
> > --- a/src/virt-viewer-app.c
> > +++ b/src/virt-viewer-app.c
> > @@ -2065,18 +2065,23 @@ virt_viewer_app_set_hotkeys(VirtViewerApp *self,
> > const gchar *hotkeys_str)
> > 
> >      for (hotkey = hotkeys; *hotkey != NULL; hotkey++) {
> >          gchar *key = strstr(*hotkey, "=");
> > -        if (key == NULL) {
> > -            g_warn_if_reached();
> > +        const gchar *value = (key == NULL) ? NULL : (*key = '\0', key + 1);
> > +        if (value == NULL || *value == '\0') {
> 
> Hmm. Not a big fan of this part of the code, but I can't come up with
> something better.
> 
> 
> > +            g_warning("missing value for key '%s'", *hotkey);
> >              continue;
> >          }
> > -        *key = '\0';
> > 
> > -        gchar *accel = spice_hotkey_to_gtk_accelerator(key + 1);
> > +        gchar *accel = spice_hotkey_to_gtk_accelerator(value);
> >          guint accel_key;
> >          GdkModifierType accel_mods;
> >          gtk_accelerator_parse(accel, &accel_key, &accel_mods);
> >          g_free(accel);
> > 
> > +        if (accel_key == 0 && accel_mods == 0) {
> > +            g_warning("Invalid value '%s' for key '%s'", value, *hotkey);
> > +            continue;
> > +        }
> > +
> >          if (g_str_equal(*hotkey, "toggle-fullscreen")) {
> >              gtk_accel_map_change_entry("<virt-viewer>/view/toggle-
> > fullscreen", accel_key, accel_mods, TRUE);
> >          } else if (g_str_equal(*hotkey, "release-cursor")) {
> > diff --git a/tests/test-hotkeys.c b/tests/test-hotkeys.c
> > index d3658f5..cd2bd88 100644
> > --- a/tests/test-hotkeys.c
> > +++ b/tests/test-hotkeys.c
> > @@ -91,11 +91,19 @@ test_hotkeys_bad(void)
> >          {
> >              "no_value",
> >              G_LOG_LEVEL_WARNING,
> > -            "*code should not be reached"
> > +            "missing value for key 'no_value'"
> > +        },{
> > +            "smartcard-insert=",
> > +            G_LOG_LEVEL_WARNING,
> > +            "missing value for key 'smartcard-insert'"
> >          },{
> >              "toggle-fullscreen=A,unknown_command=B",
> >              G_LOG_LEVEL_WARNING,
> >              "Unknown hotkey command unknown_command"
> > +        },{
> > +            "secure-attention=value",
> > +            G_LOG_LEVEL_WARNING,
> > +            "Invalid value 'value' for key 'secure-attention'"
> >          },
> >      };
> > 
> > --
> > 2.8.3
> > 
> > _______________________________________________
> > virt-tools-list mailing list
> > virt-tools-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/virt-tools-list
> 
> Acked-by: Fabiano Fidêncio <fidencio at redhat.com>
> 
> As the other two patches of this series were already ACKed, go ahead
> for this series.

Thanks, pushed

Pavel




More information about the virt-tools-list mailing list