diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-03-23 21:15:40 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-03-23 21:15:40 +0000 |
commit | d98a405d8fc5e9b3e5919b63c7498e6b11989663 (patch) | |
tree | e50757c5efc60c0f0408bd62ebb56c4645687904 /network | |
parent | ef3649fd9e62bd989ff67a125a05c962d5640fd3 (diff) |
network: Added invalid service class verification for Manager.CreateConnection
Diffstat (limited to 'network')
-rw-r--r-- | network/connection.c | 5 | ||||
-rw-r--r-- | network/connection.h | 2 | ||||
-rw-r--r-- | network/manager.c | 7 |
3 files changed, 8 insertions, 6 deletions
diff --git a/network/connection.c b/network/connection.c index 97034ad6..e47369cc 100644 --- a/network/connection.c +++ b/network/connection.c @@ -413,7 +413,7 @@ static const DBusObjectPathVTable connection_table = { }; int connection_register(DBusConnection *conn, const char *path, - const char *addr, const char *uuid) + const char *addr, uint16_t id) { struct network_conn *nc; static int bnep = 0; @@ -432,8 +432,7 @@ int connection_register(DBusConnection *conn, const char *path, nc->path = g_strdup(path); nc->raddr = g_strdup(addr); - /* FIXME: Check uuid format */ - nc->id = bnep_service_id(uuid); + nc->id = id; /* FIXME: Check for device */ nc->dev = g_new(char, 16); snprintf(nc->dev, 16, "bnep%d", bnep++); diff --git a/network/connection.h b/network/connection.h index 0726ec6c..70966b2c 100644 --- a/network/connection.h +++ b/network/connection.h @@ -21,4 +21,4 @@ * */ int connection_register(DBusConnection *conn, const char *path, - const char *addr, const char *uuid); + const char *addr, uint16_t id); diff --git a/network/manager.c b/network/manager.c index 6740f100..52e6bffa 100644 --- a/network/manager.c +++ b/network/manager.c @@ -225,6 +225,7 @@ static DBusHandlerResult create_connection(DBusConnection *conn, const char *addr; const char *str; char *path; + uint16_t id; dbus_error_init(&derr); if (!dbus_message_get_args(msg, &derr, @@ -236,12 +237,14 @@ static DBusHandlerResult create_connection(DBusConnection *conn, return DBUS_HANDLER_RESULT_HANDLED; } - /* FIXME: Check for supported/implemented client connection */ + id = bnep_service_id(str); + if ((id != BNEP_SVC_GN) && (id != BNEP_SVC_NAP)) + return err_invalid_args(conn, msg, "Not supported"); path = g_new0(char, 32); snprintf(path, 32, NETWORK_PATH "/connection%d", uid++); - if (connection_register(conn, path, addr, str) == -1) { + if (connection_register(conn, path, addr, id) == -1) { err_failed(conn, msg, "D-Bus path registration failed"); g_free(path); return DBUS_HANDLER_RESULT_HANDLED; |