Skip to content
Snippets Groups Projects
Commit d7aefbf8 authored by Bailey Forrest's avatar Bailey Forrest
Browse files

Check startup_future before using it

event_finish_startup and startup_timer_expired can race, leading one of
them to try to use startup_future when it is NULL.

Check startup_future still exists before using it.

Bug: 112114060
Test: Use Bluetooth
Change-Id: I018d45f070b3f931c1114abf0471b6ea1d524f2a
parent 63d2fa3e
No related branches found
No related tags found
No related merge requests found
......@@ -342,6 +342,9 @@ static void event_finish_startup(UNUSED_ATTR void* context) {
std::lock_guard<std::recursive_timed_mutex> lock(
commands_pending_response_mutex);
alarm_cancel(startup_timer);
if (!startup_future) {
return;
}
future_ready(startup_future, FUTURE_SUCCESS);
startup_future = NULL;
}
......@@ -358,9 +361,11 @@ static void startup_timer_expired(UNUSED_ATTR void* context) {
// hence abort.
abort();
}
if (!startup_future) {
return;
}
future_ready(startup_future, FUTURE_FAIL);
startup_future = NULL;
lock.unlock();
}
// Command/packet transmitting functions
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment