From 7ab237b025cbb4c25d345604da32e894379c1721 Mon Sep 17 00:00:00 2001 From: Marcin Bukat Date: Thu, 9 Jan 2014 21:37:07 +0100 Subject: 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 --- firmware/include/buflib.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'firmware/include/buflib.h') diff --git a/firmware/include/buflib.h b/firmware/include/buflib.h index 0b26c04bcd..171ab5bcd7 100644 --- a/firmware/include/buflib.h +++ b/firmware/include/buflib.h @@ -40,6 +40,7 @@ union buflib_data struct buflib_callbacks* ops; char* alloc; union buflib_data *handle; + uint32_t crc; }; struct buflib_context @@ -346,4 +347,9 @@ int buflib_get_num_blocks(struct buflib_context *ctx); */ void buflib_print_block_at(struct buflib_context *ctx, int block_num, char* buf, size_t bufsize); + +/** + * Check integrity of given buflib context + */ +void buflib_check_valid(struct buflib_context *ctx); #endif -- cgit v1.2.3