From 0e4fbfba03e7453846e75b2a54a8b8a6613dbb1e Mon Sep 17 00:00:00 2001
From: Steven Stallion <stallion@squareup.com>
Date: Wed, 21 Jun 2017 22:14:08 -0700
Subject: [PATCH] rtos: better sanity checking for uCOS-III

This patch improves the OSRunning check. If the rtos_running check
fails, update_threads will return an error rather than attempt to update
the thread list using bad values.

Change-Id: I8614c325504d3a9ab19aebb6862b1fe445a0c8e7
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4166
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
---
 src/rtos/uCOS-III.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/rtos/uCOS-III.c b/src/rtos/uCOS-III.c
index 9021167db..0a0fb3e9e 100644
--- a/src/rtos/uCOS-III.c
+++ b/src/rtos/uCOS-III.c
@@ -300,6 +300,11 @@ static int uCOS_III_update_threads(struct rtos *rtos)
 		return retval;
 	}
 
+	if (rtos_running != 1 && rtos_running != 0) {
+		LOG_ERROR("uCOS-III: invalid RTOS running value");
+		return ERROR_FAIL;
+	}
+
 	if (!rtos_running) {
 		rtos->thread_details = calloc(1, sizeof(struct thread_detail));
 		if (rtos->thread_details == NULL) {
-- 
GitLab