diff options
author | Vasiliy Kulikov <segooon@gmail.com> | 2010-10-30 10:26:31 -0400 |
---|---|---|
committer | Gustavo F. Padovan <padovan@profusion.mobi> | 2010-12-01 18:04:36 -0500 |
commit | d31dbf6e5989b2fd9a30ec5b25436e94f009d6df (patch) | |
tree | 5a7ad10f10b50e5b4c2f514d86b94311d17c4450 /net/bluetooth/hidp | |
parent | 3185fbd9d7bb166992f072440b3329f58bf2c60a (diff) |
Bluetooth: hidp: fix information leak to userland
Structure hidp_conninfo is copied to userland with version, product,
vendor and name fields unitialized if both session->input and session->hid
are NULL. It leads to leaking of contents of kernel stack memory.
Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'net/bluetooth/hidp')
-rw-r--r-- | net/bluetooth/hidp/core.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index c0ee8b3928ed..29544c21f4b5 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c | |||
@@ -107,6 +107,7 @@ static void __hidp_unlink_session(struct hidp_session *session) | |||
107 | 107 | ||
108 | static void __hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci) | 108 | static void __hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci) |
109 | { | 109 | { |
110 | memset(ci, 0, sizeof(*ci)); | ||
110 | bacpy(&ci->bdaddr, &session->bdaddr); | 111 | bacpy(&ci->bdaddr, &session->bdaddr); |
111 | 112 | ||
112 | ci->flags = session->flags; | 113 | ci->flags = session->flags; |
@@ -115,7 +116,6 @@ static void __hidp_copy_session(struct hidp_session *session, struct hidp_connin | |||
115 | ci->vendor = 0x0000; | 116 | ci->vendor = 0x0000; |
116 | ci->product = 0x0000; | 117 | ci->product = 0x0000; |
117 | ci->version = 0x0000; | 118 | ci->version = 0x0000; |
118 | memset(ci->name, 0, 128); | ||
119 | 119 | ||
120 | if (session->input) { | 120 | if (session->input) { |
121 | ci->vendor = session->input->id.vendor; | 121 | ci->vendor = session->input->id.vendor; |