[daemon-fix] Fixed kdbus bus address recognition
authorRadoslaw Pajak <r.pajak@samsung.com>
Tue, 3 Dec 2013 09:22:29 +0000 (10:22 +0100)
committerRadoslaw Pajak <r.pajak@samsung.com>
Tue, 3 Dec 2013 10:11:01 +0000 (11:11 +0100)
Change-Id: Icf75319d831a315f4e739fb9ac094b4cd95faa88
Signed-off-by: Radoslaw Pajak <r.pajak@samsung.com>
bus/bus.c
bus/kdbus-d.c

index 485a6fd829f607a00bac1378916e6b6efb45eb5d..8698db25ca96ce39bd78b50bc5a2648fc48168ca 100644 (file)
--- a/bus/bus.c
+++ b/bus/bus.c
@@ -433,7 +433,7 @@ process_config_first_time_only (BusContext       *context,
   if (address)
     {
 #ifdef ENABLE_KDBUS_TRANSPORT
-      if(strcmp(_dbus_string_get_const_data(address), "kdbus:") >= 0)
+      if(!strncmp(_dbus_string_get_const_data(address), "kdbus:", strlen("kdbus:")))
       {
          DBusBusType type;
          DBusServer* server;
index 3e247bea9f279b2b695b5f31bc47b289bb3ab5af..933f55df8202e35aef8d4c7303729c4e9af7aaf8 100644 (file)
@@ -334,8 +334,16 @@ char* make_kdbus_bus(DBusBusType type, const char* address, DBusError *error)
     memset(&bus_make, 0, sizeof(bus_make));
     bus_make.head.bloom_size = 64;
     bus_make.head.flags = KDBUS_MAKE_ACCESS_WORLD;
-    if(!strcmp(addr_value, "sbb"))
-      bus_make.head.flags |= KDBUS_MAKE_SBB_OFFSET;
+    if(*addr_value)
+      {
+        if(!strcmp(addr_value, "sbb"))
+          bus_make.head.flags |= KDBUS_MAKE_SBB_OFFSET;
+        else
+          {
+            dbus_set_error_const(error, DBUS_ERROR_BAD_ADDRESS, "Invalid address parameter.");
+            return NULL;
+          }
+      }
 
     if(type == DBUS_BUS_SYSTEM)
         snprintf(bus_make.name, sizeof(bus_make.name), "%u-kdbus-%s", getuid(), "system");