diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-07-13 11:21:26 -0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-07-13 11:21:26 -0300 |
commit | 73dadb5311955d9fd07c4c5b39b380aa46e05b11 (patch) | |
tree | 46fd4ed7334bd292b28dfb04a3fd05143dbdda95 /network | |
parent | e85f7a782b74d35559b03579e23c9b151ab015e7 (diff) | |
download | bluez-73dadb5311955d9fd07c4c5b39b380aa46e05b11.tar.gz |
Refuse connections if no NAP server is registered
Diffstat (limited to 'network')
-rw-r--r-- | network/server.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/network/server.c b/network/server.c index 8cf1bff8..9a5bd385 100644 --- a/network/server.c +++ b/network/server.c @@ -480,6 +480,7 @@ reject: static void confirm_event(GIOChannel *chan, gpointer user_data) { struct network_adapter *na = user_data; + struct network_server *ns; int perr; bdaddr_t src, dst; char address[18]; @@ -503,6 +504,16 @@ static void confirm_event(GIOChannel *chan, gpointer user_data) goto drop; } + ns = find_server(na->servers, BNEP_SVC_NAP); + if (!ns) + goto drop; + + if (!ns->record_id) + goto drop; + + if (!ns->bridge) + goto drop; + na->setup = g_new0(struct network_session, 1); bacpy(&na->setup->dst, &dst); na->setup->io = g_io_channel_ref(chan); @@ -738,7 +749,6 @@ int server_register(struct btd_adapter *adapter) struct network_adapter *na; struct network_server *ns; const char *path; - uint16_t id = BNEP_SVC_NAP; na = find_adapter(adapters, adapter); if (!na) { @@ -748,18 +758,14 @@ int server_register(struct btd_adapter *adapter) adapters = g_slist_append(adapters, na); } - ns = find_server(na->servers, id); + ns = find_server(na->servers, BNEP_SVC_NAP); if (ns) return 0; ns = g_new0(struct network_server, 1); - switch (id) { - case BNEP_SVC_NAP: - ns->iface = g_strdup(NETWORK_SERVER_INTERFACE); - ns->name = g_strdup("Network service"); - break; - } + ns->iface = g_strdup(NETWORK_SERVER_INTERFACE); + ns->name = g_strdup("Network service"); path = adapter_get_path(adapter); @@ -773,7 +779,7 @@ int server_register(struct btd_adapter *adapter) } adapter_get_address(adapter, &ns->src); - ns->id = id; + ns->id = BNEP_SVC_NAP; ns->na = na; ns->record_id = 0; na->servers = g_slist_append(na->servers, ns); |