diff options
| -rw-r--r-- | hcid/dbus-manager.c | 4 | ||||
| -rw-r--r-- | hcid/dbus-service.c | 6 | 
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);  		} | 
