chiark / gitweb /
localed: verify xkb keymaps after pk-queries
authorDavid Herrmann <dh.herrmann@gmail.com>
Tue, 25 Nov 2014 09:26:08 +0000 (10:26 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Tue, 25 Nov 2014 09:26:08 +0000 (10:26 +0100)
Make sure not to run xkb-keymap validation twice if pk-queries are used.
Move it below pk-checks.

src/locale/localed.c

index 4e56382..7fe7324 100644 (file)
@@ -1087,17 +1087,17 @@ static int method_set_x11_keyboard(sd_bus *bus, sd_bus_message *m, void *userdat
                     (options && !string_is_safe(options)))
                         return sd_bus_error_set_errnof(error, -EINVAL, "Received invalid keyboard data");
 
-                r = verify_xkb_rmlvo(model, layout, variant, options);
-                if (r < 0)
-                        log_warning("Cannot compile XKB keymap for new x11 keyboard layout ('%s' / '%s' / '%s' / '%s'): %s",
-                                    strempty(model), strempty(layout), strempty(variant), strempty(options), strerror(-r));
-
                 r = bus_verify_polkit_async(m, CAP_SYS_ADMIN, "org.freedesktop.locale1.set-keyboard", interactive, &c->polkit_registry, error);
                 if (r < 0)
                         return r;
                 if (r == 0)
                         return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
 
+                r = verify_xkb_rmlvo(model, layout, variant, options);
+                if (r < 0)
+                        log_warning("Cannot compile XKB keymap for new x11 keyboard layout ('%s' / '%s' / '%s' / '%s'): %s",
+                                    strempty(model), strempty(layout), strempty(variant), strempty(options), strerror(-r));
+
                 if (free_and_strdup(&c->x11_layout, layout) < 0 ||
                     free_and_strdup(&c->x11_model, model) < 0 ||
                     free_and_strdup(&c->x11_variant, variant) < 0 ||