diff options
author | Spencer Oliver <spen@spen-soft.co.uk> | 2013-08-19 14:42:53 +0100 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2013-09-08 16:11:29 +0000 |
commit | e1d2abc9ca53d983716ac9dcc481b8130d8e5ca2 (patch) | |
tree | b52943b67ed98d6a38c7b4ae7a1dadcef70e76fd /src | |
parent | e475896eb18185ac6089cfeec45c8bd4dcb73330 (diff) |
rtos: Do not dereference null pointers
detected by clang.
Change-Id: Id395f9d33bc2903b29a158fc3540ae51857e6aa0
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/1555
Tested-by: jenkins
Diffstat (limited to 'src')
-rw-r--r-- | src/rtos/linux.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/rtos/linux.c b/src/rtos/linux.c index 80d84d73..e692ada8 100644 --- a/src/rtos/linux.c +++ b/src/rtos/linux.c @@ -533,7 +533,7 @@ int get_current(struct target *target, int create) LOG_ERROR ("error in linux current thread update"); - if (create) { + if (create && ct) { struct threads *t; t = calloc(1, sizeof(struct threads)); t->base_addr = ct->TS; @@ -1140,13 +1140,12 @@ int linux_gdb_thread_packet(struct target *target, char *tmp_str = out_str; tmp_str += sprintf(tmp_str, "m"); struct threads *temp = linux_os->thread_list; - tmp_str += sprintf(tmp_str, "%016" PRIx64, temp->threadid); - temp = temp->next; while (temp != NULL) { - tmp_str += sprintf(tmp_str, ","); tmp_str += sprintf(tmp_str, "%016" PRIx64, temp->threadid); temp = temp->next; + if (temp) + tmp_str += sprintf(tmp_str, ","); } gdb_put_packet(connection, out_str, strlen(out_str)); |