On operating systems with opportunistic malloc() (e.g. default setting in
GNU/Linux) malloc can sometimes allocate a huge memory region but later the
process will get killed on the first attempt to use this memory, so
checking for malloc's return value is not enough to prevent a crash.
This patch is compile-tested only.
Change-Id: I5e21663115c8e9a0ca9f3d71f7ba4bd09e5c3bb1
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/521
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
 #include "helper/log.h"
 #include "rtos_standard_stackings.h"
 
+#define FREERTOS_MAX_PRIORITIES        63
+
 #define FreeRTOS_STRUCT(int_type, ptr_type, list_prev_offset)
 
 struct FreeRTOS_params {
                        (uint8_t *)&max_used_priority);
        if (retval != ERROR_OK)
                return retval;
+       if (max_used_priority > FREERTOS_MAX_PRIORITIES) {
+               LOG_ERROR("FreeRTOS maximum used priority is unreasonably big, not proceeding: %" PRId64 "",
+                       max_used_priority);
+               return ERROR_FAIL;
+       }
 
        symbol_address_t *list_of_lists =
                (symbol_address_t *)malloc(sizeof(symbol_address_t) *