summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2007-03-23 21:15:40 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2007-03-23 21:15:40 +0000
commitd98a405d8fc5e9b3e5919b63c7498e6b11989663 (patch)
treee50757c5efc60c0f0408bd62ebb56c4645687904
parentef3649fd9e62bd989ff67a125a05c962d5640fd3 (diff)
network: Added invalid service class verification for Manager.CreateConnection
-rw-r--r--network/connection.c5
-rw-r--r--network/connection.h2
-rw-r--r--network/manager.c7
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;