Lennart Poettering 7e98ac
From cda2b84a69905aafe2f8c6bd3f1c9eefe92b6bbb Mon Sep 17 00:00:00 2001
Lennart Poettering 7e98ac
From: Michal Schmidt <mschmidt@redhat.com>
Lennart Poettering 7e98ac
Date: Wed, 25 May 2011 16:17:17 +0200
Lennart Poettering 7e98ac
Subject: [PATCH] dbus-common: fix segfault when a DBus message has no
Lennart Poettering 7e98ac
 interface
Lennart Poettering 7e98ac
Lennart Poettering 7e98ac
dbus_message_get_interface() may return NULL.
Lennart Poettering 7e98ac
Lennart Poettering 7e98ac
https://bugzilla.redhat.com/show_bug.cgi?id=707483
Lennart Poettering 7e98ac
---
Lennart Poettering 7e98ac
 src/dbus-common.c |   10 +++++++---
Lennart Poettering 7e98ac
 1 files changed, 7 insertions(+), 3 deletions(-)
Lennart Poettering 7e98ac
Lennart Poettering 7e98ac
diff --git a/src/dbus-common.c b/src/dbus-common.c
Lennart Poettering 7e98ac
index 9bf0dab..5db077b 100644
Lennart Poettering 7e98ac
--- a/src/dbus-common.c
Lennart Poettering 7e98ac
+++ b/src/dbus-common.c
Lennart Poettering 7e98ac
@@ -418,9 +418,13 @@ DBusHandlerResult bus_default_message_handler(
Lennart Poettering 7e98ac
                         return bus_send_error_reply(c, message, &error, -EINVAL);
Lennart Poettering 7e98ac
                 }
Lennart Poettering 7e98ac
 
Lennart Poettering 7e98ac
-        } else if (!nulstr_contains(interfaces, dbus_message_get_interface(message))) {
Lennart Poettering 7e98ac
-                dbus_set_error_const(&error, DBUS_ERROR_UNKNOWN_INTERFACE, "Unknown interface");
Lennart Poettering 7e98ac
-                return bus_send_error_reply(c, message, &error, -EINVAL);
Lennart Poettering 7e98ac
+        } else {
Lennart Poettering 7e98ac
+                const char *interface = dbus_message_get_interface(message);
Lennart Poettering 7e98ac
+
Lennart Poettering 7e98ac
+                if (!interface || !nulstr_contains(interfaces, interface)) {
Lennart Poettering 7e98ac
+                        dbus_set_error_const(&error, DBUS_ERROR_UNKNOWN_INTERFACE, "Unknown interface");
Lennart Poettering 7e98ac
+                        return bus_send_error_reply(c, message, &error, -EINVAL);
Lennart Poettering 7e98ac
+                }
Lennart Poettering 7e98ac
         }
Lennart Poettering 7e98ac
 
Lennart Poettering 7e98ac
         if (reply) {
Lennart Poettering 7e98ac
-- 
Lennart Poettering 7e98ac
1.7.5.2
Lennart Poettering 7e98ac