summaryrefslogtreecommitdiff
path: root/src/libsystemd-terminal/idev-keyboard.c
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2014-08-28 15:24:00 +0200
committerDavid Herrmann <dh.herrmann@gmail.com>2014-08-28 15:25:51 +0200
commit427c71629ea375e4ca1841a55902b40de21f2ab4 (patch)
tree58207768ddbe4d0dbdbb5ec5feb33e3cfa0f83d0 /src/libsystemd-terminal/idev-keyboard.c
parentc168eb6785bacc2042687bf879259dfc27d5a523 (diff)
bus: don't skip interfaces in bus_message_map_properties_changed()
Skipping interfaces randomly without the caller specifying it is nasty. Avoid this and let the caller do that themselves.
Diffstat (limited to 'src/libsystemd-terminal/idev-keyboard.c')
-rw-r--r--src/libsystemd-terminal/idev-keyboard.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/libsystemd-terminal/idev-keyboard.c b/src/libsystemd-terminal/idev-keyboard.c
index 03f54bb74f..ab9e4811b3 100644
--- a/src/libsystemd-terminal/idev-keyboard.c
+++ b/src/libsystemd-terminal/idev-keyboard.c
@@ -317,11 +317,14 @@ static int kbdctx_locale_props_changed_fn(sd_bus *bus,
kc->slot_locale_get_all = sd_bus_slot_unref(kc->slot_locale_get_all);
+ /* skip interface name */
+ r = sd_bus_message_skip(signal, "s");
+ if (r < 0)
+ goto error;
+
r = bus_message_map_properties_changed(bus, signal, kbdctx_locale_map, kc);
- if (r < 0) {
- log_debug("idev-keyboard: cannot handle PropertiesChanged from locale1: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ goto error;
if (r > 0) {
r = kbdctx_query_locale(kc);
@@ -331,6 +334,10 @@ static int kbdctx_locale_props_changed_fn(sd_bus *bus,
kbdctx_refresh_keymap(kc);
return 0;
+
+error:
+ log_debug("idev-keyboard: cannot handle PropertiesChanged from locale1: %s", strerror(-r));
+ return r;
}
static int kbdctx_setup_bus(kbdctx *kc) {