X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fdbus-common.c;h=5db077b74fb8115157cd8932ea1a8b98ae70c188;hp=b23373c5d1d28946a876c61b87ec995053a14011;hb=4160ec67ba40eee5d14c5b96d37c89a3a5356f34;hpb=bfebab7f69cb23f3a488f02bc2be9c8309808221 diff --git a/src/dbus-common.c b/src/dbus-common.c index b23373c5d..5db077b74 100644 --- a/src/dbus-common.c +++ b/src/dbus-common.c @@ -418,9 +418,13 @@ DBusHandlerResult bus_default_message_handler( return bus_send_error_reply(c, message, &error, -EINVAL); } - } else if (!nulstr_contains(interfaces, dbus_message_get_interface(message))) { - dbus_set_error_const(&error, DBUS_ERROR_UNKNOWN_INTERFACE, "Unknown interface"); - return bus_send_error_reply(c, message, &error, -EINVAL); + } else { + const char *interface = dbus_message_get_interface(message); + + if (!interface || !nulstr_contains(interfaces, interface)) { + dbus_set_error_const(&error, DBUS_ERROR_UNKNOWN_INTERFACE, "Unknown interface"); + return bus_send_error_reply(c, message, &error, -EINVAL); + } } if (reply) { @@ -568,6 +572,21 @@ int bus_property_append_ul(DBusMessageIter *i, const char *property, void *data) return 0; } +int bus_property_append_long(DBusMessageIter *i, const char *property, void *data) { + int64_t l; + + assert(i); + assert(property); + assert(data); + + l = (int64_t) *(long*) data; + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT64, &l)) + return -ENOMEM; + + return 0; +} + const char *bus_errno_to_dbus(int error) { switch(error) {