[virt-tools-list] [PATCH virt-viewer v3 3/3] app: Check validity of hotkey
Fabiano Fidêncio
fidencio at redhat.com
Thu Jun 2 07:39:20 UTC 2016
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.
More information about the virt-tools-list
mailing list