summaryrefslogtreecommitdiffstats
path: root/hcid
diff options
context:
space:
mode:
Diffstat (limited to 'hcid')
-rw-r--r--hcid/dbus-manager.c4
-rw-r--r--hcid/dbus-service.c6
2 files changed, 6 insertions, 4 deletions
diff --git a/hcid/dbus-manager.c b/hcid/dbus-manager.c
index 53095769..6022f97c 100644
--- a/hcid/dbus-manager.c
+++ b/hcid/dbus-manager.c
@@ -418,7 +418,7 @@ static DBusHandlerResult add_service_record(DBusConnection *conn,
return error_invalid_arguments(conn, msg);
}
- if (strcmp(dbus_message_get_sender(msg), agent->id))
+ if (!agent || strcmp(dbus_message_get_sender(msg), agent->id))
return error_not_authorized(conn, msg);
dbus_message_iter_next(&iter);
@@ -501,7 +501,7 @@ static DBusHandlerResult remove_service_record(DBusConnection *conn,
return error_invalid_arguments(conn, msg);
}
- if (strcmp(dbus_message_get_sender(msg), agent->id))
+ if (!agent || strcmp(dbus_message_get_sender(msg), agent->id))
return error_not_authorized(conn, msg);
diff --git a/hcid/dbus-service.c b/hcid/dbus-service.c
index 34602846..9286837f 100644
--- a/hcid/dbus-service.c
+++ b/hcid/dbus-service.c
@@ -283,7 +283,7 @@ static void service_agent_exit(const char *name, void *data)
if (!dbus_connection_get_object_path_data(conn, path, (void *) &agent))
continue;
- if (strcmp(name, agent->id))
+ if (!agent || strcmp(name, agent->id))
continue;
if (agent->records)
@@ -305,7 +305,6 @@ static void service_agent_exit(const char *name, void *data)
slist_foreach(lremove, (slist_func_t) free, NULL);
slist_free(lremove);
-
}
static void forward_reply(DBusPendingCall *call, void *udata)
@@ -808,6 +807,9 @@ void release_service_agents(DBusConnection *conn)
l = l->next;
if (dbus_connection_get_object_path_data(conn, path, (void *) &agent)) {
+ if (!agent)
+ continue;
+
send_release(conn, agent->id, path);
service_agent_free(agent);
}