From f65d3384dd923c9ead9bcf264592bd879054f6dc Mon Sep 17 00:00:00 2001 From: Ryan Long Date: Fri, 12 Feb 2021 13:50:36 -0500 Subject: 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. --- cpukit/libdebugger/rtems-debugger-threads.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'cpukit/libdebugger') 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]; -- cgit v1.2.3