* [PATCH 1/2] monitor: Fix use of uninitialized variable @ 2015-11-21 20:09 Szymon Janc 2015-11-21 20:09 ` [PATCH 2/2] monitor: Fix possible crash on unknown LE Meta Event Szymon Janc 2015-11-24 19:57 ` [PATCH 1/2] monitor: Fix use of uninitialized variable Szymon Janc 0 siblings, 2 replies; 3+ messages in thread From: Szymon Janc @ 2015-11-21 20:09 UTC (permalink / raw) To: linux-bluetooth; +Cc: Szymon Janc subevent code was never set in vendor_evt() resulting in printing random stack data as subevent opcode in print_subevent(). --- monitor/packet.c | 1 + 1 file changed, 1 insertion(+) diff --git a/monitor/packet.c b/monitor/packet.c index 4c18cb2..70bd153 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -8471,6 +8471,7 @@ static void vendor_evt(const void *data, uint8_t size) vendor_data.str = vendor_str; } else vendor_data.str = vnd->str; + vendor_data.subevent = subevent; vendor_data.func = vnd->evt_func; vendor_data.size = vnd->evt_size; vendor_data.fixed = vnd->evt_fixed; -- 2.6.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] monitor: Fix possible crash on unknown LE Meta Event 2015-11-21 20:09 [PATCH 1/2] monitor: Fix use of uninitialized variable Szymon Janc @ 2015-11-21 20:09 ` Szymon Janc 2015-11-24 19:57 ` [PATCH 1/2] monitor: Fix use of uninitialized variable Szymon Janc 1 sibling, 0 replies; 3+ messages in thread From: Szymon Janc @ 2015-11-21 20:09 UTC (permalink / raw) To: linux-bluetooth; +Cc: Szymon Janc For unknown LE Meta Event subevent_data passed to print_subevent is NULL. This results in NULL pointer dereference when subeven code is printed. Fix that by making print_subevent expect always valid subevent_data and handle unknown event in caller. --- monitor/packet.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/monitor/packet.c b/monitor/packet.c index 70bd153..322bba6 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -8375,23 +8375,17 @@ struct subevent_data { static void print_subevent(const struct subevent_data *subevent_data, const void *data, uint8_t size) { - const char *subevent_color, *subevent_str; + const char *subevent_color; - if (subevent_data) { - if (subevent_data->func) - subevent_color = COLOR_HCI_EVENT; - else - subevent_color = COLOR_HCI_EVENT_UNKNOWN; - subevent_str = subevent_data->str; - } else { + if (subevent_data->func) + subevent_color = COLOR_HCI_EVENT; + else subevent_color = COLOR_HCI_EVENT_UNKNOWN; - subevent_str = "Unknown"; - } - print_indent(6, subevent_color, "", subevent_str, COLOR_OFF, + print_indent(6, subevent_color, "", subevent_data->str, COLOR_OFF, " (0x%2.2x)", subevent_data->subevent); - if (!subevent_data || !subevent_data->func) { + if (!subevent_data->func) { packet_hexdump(data, size); return; } @@ -8442,9 +8436,16 @@ static const struct subevent_data le_meta_event_table[] = { static void le_meta_event_evt(const void *data, uint8_t size) { uint8_t subevent = *((const uint8_t *) data); - const struct subevent_data *subevent_data = NULL; + struct subevent_data unknown; + const struct subevent_data *subevent_data = &unknown; int i; + unknown.subevent = subevent; + unknown.str = "Unknown"; + unknown.func = NULL; + unknown.size = 0; + unknown.fixed = true; + for (i = 0; le_meta_event_table[i].str; i++) { if (le_meta_event_table[i].subevent == subevent) { subevent_data = &le_meta_event_table[i]; -- 2.6.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] monitor: Fix use of uninitialized variable 2015-11-21 20:09 [PATCH 1/2] monitor: Fix use of uninitialized variable Szymon Janc 2015-11-21 20:09 ` [PATCH 2/2] monitor: Fix possible crash on unknown LE Meta Event Szymon Janc @ 2015-11-24 19:57 ` Szymon Janc 1 sibling, 0 replies; 3+ messages in thread From: Szymon Janc @ 2015-11-24 19:57 UTC (permalink / raw) To: linux-bluetooth On Saturday 21 November 2015 21:09:03 Szymon Janc wrote: > subevent code was never set in vendor_evt() resulting in printing > random stack data as subevent opcode in print_subevent(). > --- > monitor/packet.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/monitor/packet.c b/monitor/packet.c > index 4c18cb2..70bd153 100644 > --- a/monitor/packet.c > +++ b/monitor/packet.c > @@ -8471,6 +8471,7 @@ static void vendor_evt(const void *data, uint8_t size) > vendor_data.str = vendor_str; > } else > vendor_data.str = vnd->str; > + vendor_data.subevent = subevent; > vendor_data.func = vnd->evt_func; > vendor_data.size = vnd->evt_size; > vendor_data.fixed = vnd->evt_fixed; Applied. -- pozdrawiam Szymon Janc ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-11-24 19:57 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-21 20:09 [PATCH 1/2] monitor: Fix use of uninitialized variable Szymon Janc 2015-11-21 20:09 ` [PATCH 2/2] monitor: Fix possible crash on unknown LE Meta Event Szymon Janc 2015-11-24 19:57 ` [PATCH 1/2] monitor: Fix use of uninitialized variable Szymon Janc
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.