Skip to content

Commit

Permalink
Refine heap_5 heap protector (#1146)
Browse files Browse the repository at this point in the history
Add configVALIDATE_HEAP_BLOCK_POINTER on heap_5

heap_5 is used for multiple separated memory spaces. In the
previous implementation, it only verifies the highest and
lowest addresses. A pointer may not be within heap regions,
but is still located between the highest and lowest addressed.

Add maco configVALIDATE_HEAP_BLOCK_POINTER to provide
customized heap block pointers detection based on the settings
of heap regions.

Signed-off-by: wangfei_chen <wangfei_chen@realsil.com.cn>
  • Loading branch information
Saiiijchan authored Sep 19, 2024
1 parent d3052f1 commit 61440fc
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions portable/MemMang/heap_5.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,12 +129,19 @@
* heapVALIDATE_BLOCK_POINTER assert. */
#define heapPROTECT_BLOCK_POINTER( pxBlock ) ( ( BlockLink_t * ) ( ( ( portPOINTER_SIZE_TYPE ) ( pxBlock ) ) ^ xHeapCanary ) )

/* Assert that a heap block pointer is within the heap bounds. */
#define heapVALIDATE_BLOCK_POINTER( pxBlock ) \
configASSERT( ( pucHeapHighAddress != NULL ) && \
( pucHeapLowAddress != NULL ) && \
( ( uint8_t * ) ( pxBlock ) >= pucHeapLowAddress ) && \
( ( uint8_t * ) ( pxBlock ) < pucHeapHighAddress ) )
/* Assert that a heap block pointer is within the heap bounds.
* Setting configVALIDATE_HEAP_BLOCK_POINTER to 1 enables customized heap block pointers
* protection on heap_5. */
#ifndef configVALIDATE_HEAP_BLOCK_POINTER
#define heapVALIDATE_BLOCK_POINTER( pxBlock ) \
configASSERT( ( pucHeapHighAddress != NULL ) && \
( pucHeapLowAddress != NULL ) && \
( ( uint8_t * ) ( pxBlock ) >= pucHeapLowAddress ) && \
( ( uint8_t * ) ( pxBlock ) < pucHeapHighAddress ) )
#else /* ifndef configVALIDATE_HEAP_BLOCK_POINTER */
#define heapVALIDATE_BLOCK_POINTER( pxBlock ) \
configVALIDATE_HEAP_BLOCK_POINTER( pxBlock )
#endif /* configVALIDATE_HEAP_BLOCK_POINTER */

#else /* if ( configENABLE_HEAP_PROTECTOR == 1 ) */

Expand Down

0 comments on commit 61440fc

Please sign in to comment.