summaryrefslogtreecommitdiff
path: root/firmware/target/hosted
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2014-01-09 21:37:07 +0100
committerMarcin Bukat <marcin.bukat@gmail.com>2014-01-16 10:17:39 +0100
commit7ab237b025cbb4c25d345604da32e894379c1721 (patch)
tree92d147029519c55d57db4273066d57b960ad7158 /firmware/target/hosted
parent7f5dce4116bf4e62e0cd3ef16730157e17625e1c (diff)
downloadrockbox-7ab237b025cbb4c25d345604da32e894379c1721.tar.gz
rockbox-7ab237b025cbb4c25d345604da32e894379c1721.zip
buflib: Add crc field protecting buflib cookie integrity
This should catch the case of buffer misuse which results in corrupted cookie of next allocation. The check is performed on move_block() so it may be a bit late. There is buflib_check_valid() provided which checks the integrity of all cookies for given context. On DEBUG build with --sdl-thread this check is carried out for core_ctx on every context switch to catch problems earlier. Change-Id: I999d4576084592394e3dbd3bdf0f32935ff5f601 Reviewed-on: http://gerrit.rockbox.org/711 Reviewed-by: Thomas Martitz <kugel@rockbox.org>
Diffstat (limited to 'firmware/target/hosted')
-rw-r--r--firmware/target/hosted/sdl/thread-sdl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/firmware/target/hosted/sdl/thread-sdl.c b/firmware/target/hosted/sdl/thread-sdl.c
index eaffa86aee..fbc26c8a9f 100644
--- a/firmware/target/hosted/sdl/thread-sdl.c
+++ b/firmware/target/hosted/sdl/thread-sdl.c
@@ -32,6 +32,7 @@
32#include "kernel.h" 32#include "kernel.h"
33#include "thread.h" 33#include "thread.h"
34#include "debug.h" 34#include "debug.h"
35#include "core_alloc.h"
35 36
36/* Define this as 1 to show informational messages that are not errors. */ 37/* Define this as 1 to show informational messages that are not errors. */
37#define THREAD_SDL_DEBUGF_ENABLED 0 38#define THREAD_SDL_DEBUGF_ENABLED 0
@@ -382,6 +383,9 @@ void switch_thread(void)
382 } /* STATE_SLEEPING: */ 383 } /* STATE_SLEEPING: */
383 } 384 }
384 385
386#ifdef DEBUG
387 core_check_valid();
388#endif
385 cores[CURRENT_CORE].running = current; 389 cores[CURRENT_CORE].running = current;
386 390
387 if (threads_status != THREADS_RUN) 391 if (threads_status != THREADS_RUN)