summaryrefslogtreecommitdiffstats
path: root/cpukit/libdebugger
diff options
context:
space:
mode:
authorRyan Long <ryan.long@oarcorp.com>2021-02-12 13:50:36 -0500
committerJoel Sherrill <joel@rtems.org>2021-02-12 17:13:19 -0600
commitf65d3384dd923c9ead9bcf264592bd879054f6dc (patch)
tree490ee5a631f18b3f314c4953d34cd2ba925c45c4 /cpukit/libdebugger
parentrtems-debugger-target.c: Fix Dereference before null check (CID #1468682) (diff)
downloadrtems-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 'cpukit/libdebugger')
-rw-r--r--cpukit/libdebugger/rtems-debugger-threads.c14
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 = &current[i];