diff --git a/src/pulsecore/protocol-dbus.c b/src/pulsecore/protocol-dbus.c index 6a0dcf344..03cebc1ea 100644 --- a/src/pulsecore/protocol-dbus.c +++ b/src/pulsecore/protocol-dbus.c @@ -468,10 +468,15 @@ static enum find_result_t find_handler(struct call_info *call_info) { else if (!(call_info->iface_entry = pa_hashmap_get(call_info->obj_entry->interfaces, call_info->interface))) return NO_SUCH_INTERFACE; - else if ((call_info->method_handler = pa_hashmap_get(call_info->iface_entry->method_handlers, call_info->method))) + else if ((call_info->method_handler = pa_hashmap_get(call_info->iface_entry->method_handlers, call_info->method))) { + call_info->expected_method_sig = pa_hashmap_get(call_info->iface_entry->method_signatures, call_info->method); + + if (!pa_streq(call_info->method_sig, call_info->expected_method_sig)) + return INVALID_METHOD_SIG; + return FOUND_METHOD; - else + } else return NO_SUCH_METHOD; } else { /* The method call doesn't contain an interface. */