mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-13 15:12:30 -05:00
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>
This commit is contained in:
parent
7f5dce4116
commit
7ab237b025
9 changed files with 95 additions and 13 deletions
|
|
@ -39,6 +39,7 @@
|
|||
#ifdef RB_PROFILE
|
||||
#include <profile.h>
|
||||
#endif
|
||||
#include "core_alloc.h"
|
||||
#include "gcc_extensions.h"
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -1161,6 +1162,11 @@ void switch_thread(void)
|
|||
* to this call. */
|
||||
store_context(&thread->context);
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Check core_ctx buflib integrity */
|
||||
core_check_valid();
|
||||
#endif
|
||||
|
||||
/* Check if the current thread stack is overflown */
|
||||
if (UNLIKELY(thread->stack[0] != DEADBEEF) && thread->stack_size > 0)
|
||||
thread_stkov(thread);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue