diff --git a/profiles/input/device.c b/profiles/input/device.c
index a8d5964..6523161 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
return err;
}
+bool input_device_exists(const bdaddr_t *src, const bdaddr_t *dst)
+{
+ if (find_device(src, dst))
+ return true;
+
+ return false;
+}
+
int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm,
GIOChannel *io)
{
diff --git a/profiles/input/device.h b/profiles/input/device.h
index 39c642d..da2149c 100644
--- a/profiles/input/device.h
+++ b/profiles/input/device.h
int input_device_register(struct btd_service *service);
void input_device_unregister(struct btd_service *service);
+bool input_device_exists(const bdaddr_t *src, const bdaddr_t *dst);
int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm,
GIOChannel *io);
int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst);
diff --git a/profiles/input/server.c b/profiles/input/server.c
index 65631e6..21d4562 100644
--- a/profiles/input/server.c
+++ b/profiles/input/server.c
goto drop;
}
+ ba2str(&dst, addr);
+
if (server->confirm) {
- char address[18];
+ error("Refusing connection from %s: setup in progress", addr);
+ goto drop;
+ }
- ba2str(&dst, address);
- error("Refusing connection from %s: setup in progress",
- address);
+ if (!input_device_exists(&src, &dst)) {
+ error("Refusing connection from %s: unknown device", addr);
goto drop;
}
if (ret != 0)
return;
- ba2str(&src, addr);
- error("input: authorization for %s failed", addr);
+ error("input: authorization for device %s failed", addr);
g_io_channel_unref(server->confirm);
server->confirm = NULL;