gdbus: Call check_signals when sending signals with g_dbus_send_message
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 28 Dec 2012 12:51:03 +0000 (14:51 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Sun, 30 Dec 2012 18:49:27 +0000 (10:49 -0800)
If message passed to g_dbus_send_message is a signal verify if it is a
valid and there really exists an interface with respective signal name.

gdbus/object.c

index c6bdd59..b9cb284 100644 (file)
@@ -1511,6 +1511,15 @@ gboolean g_dbus_send_message(DBusConnection *connection, DBusMessage *message)
 
        if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL)
                dbus_message_set_no_reply(message, TRUE);
+       else if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL) {
+               const char *path = dbus_message_get_path(message);
+               const char *interface = dbus_message_get_interface(message);
+               const char *name = dbus_message_get_member(message);
+               const GDBusArgInfo *args;
+
+               if (!check_signal(connection, path, interface, name, &args))
+                       return FALSE;
+       }
 
        result = dbus_connection_send(connection, message, NULL);