diff options
author | Ryan Long <ryan.long@oarcorp.com> | 2021-02-12 13:50:36 -0500 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2021-02-12 17:13:19 -0600 |
commit | f65d3384dd923c9ead9bcf264592bd879054f6dc (patch) | |
tree | 490ee5a631f18b3f314c4953d34cd2ba925c45c4 /cpukit/libdebugger/rtems-debugger-threads.c | |
parent | rtems-debugger-target.c: Fix Dereference before null check (CID #1468682) (diff) | |
download | rtems-f65d3384dd923c9ead9bcf264592bd879054f6dc.tar.bz2 |
rtems-debugger-threads.c: Fix three Dereference before null check errors
CID 1468681: Dereference before null check in rtems_debugger_thread_continue().
CID 1468690: Dereference before null check in rtems_debugger_thread_system_resume().
CID 1468694: Dereference before null check in rtems_debugger_thread_find_index().
Closes #4241.
Diffstat (limited to '')
-rw-r--r-- | cpukit/libdebugger/rtems-debugger-threads.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/cpukit/libdebugger/rtems-debugger-threads.c b/cpukit/libdebugger/rtems-debugger-threads.c index 84a9faa453..5b96e5f194 100644 --- a/cpukit/libdebugger/rtems-debugger-threads.c +++ b/cpukit/libdebugger/rtems-debugger-threads.c @@ -148,9 +148,9 @@ int rtems_debugger_thread_find_index(rtems_id id) { rtems_debugger_threads* threads = rtems_debugger->threads; - rtems_debugger_thread* current = rtems_debugger_thread_current(threads); int r = -1; if (threads != NULL) { + rtems_debugger_thread* current = rtems_debugger_thread_current(threads); size_t i; for (i = 0; i < threads->current.level; ++i) { if (id == 0 || current[i].id == id) { @@ -347,8 +347,11 @@ rtems_debugger_thread_system_resume(bool detaching) rtems_debugger_threads* threads = rtems_debugger->threads; rtems_debugger_thread* current; int r = 0; + if (threads == NULL) { + return r; + } current = rtems_debugger_thread_current(threads); - if (threads != NULL && current != NULL) { + if (current != NULL) { size_t i; if (rtems_debugger_verbose()) rtems_debugger_printf("rtems-db: sys: : resuming\n"); @@ -430,8 +433,13 @@ rtems_debugger_thread_continue_all(void) rtems_debugger_threads* threads = rtems_debugger->threads; rtems_debugger_thread* current; int r = 0; + if (threads == NULL) { + r = -1; + errno = EIO; + return r; + } current = rtems_debugger_thread_current(threads); - if (threads != NULL && current != NULL) { + if (current != NULL) { size_t i; for (i = 0; i < threads->current.level; ++i) { rtems_debugger_thread* thread = ¤t[i]; |