diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2014-01-09 21:37:07 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2014-01-16 10:17:39 +0100 |
commit | 7ab237b025cbb4c25d345604da32e894379c1721 (patch) | |
tree | 92d147029519c55d57db4273066d57b960ad7158 /firmware/target/hosted/sdl/thread-sdl.c | |
parent | 7f5dce4116bf4e62e0cd3ef16730157e17625e1c (diff) | |
download | rockbox-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/sdl/thread-sdl.c')
-rw-r--r-- | firmware/target/hosted/sdl/thread-sdl.c | 4 |
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) |