kasan: fix realloc memcpy tags check error

When the size of the new realloc is larger than the old one and can be expanded forward and backward, the tag of oldmem needs to be set to the same as newmem, otherwise memcpy will report a kasan error.

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
This commit is contained in:
wangmingrong1
2025-06-30 18:19:38 +08:00
committed by Xiang Xiao
parent c6da553788
commit 448ace4761
4 changed files with 53 additions and 4 deletions
+21
View File
@@ -41,6 +41,8 @@
# define kasan_unpoison(addr, size) addr
# define kasan_register(addr, size)
# define kasan_unregister(addr)
# define kasan_get_tag(addr) 0
# define kasan_set_tag(addr, tag) addr
# define kasan_clear_tag(addr) addr
# define kasan_start()
# define kasan_stop()
@@ -132,6 +134,12 @@ void kasan_register(FAR void *addr, FAR size_t *size);
void kasan_unregister(FAR void *addr);
/****************************************************************************
* Name: kasan_set_tag
****************************************************************************/
FAR void *kasan_set_tag(FAR const void *addr, uint8_t tag);
/****************************************************************************
* Name: kasan_clear_tag
*
@@ -145,6 +153,19 @@ void kasan_unregister(FAR void *addr);
FAR void *kasan_clear_tag(FAR const void *addr);
/****************************************************************************
* Name: kasan_get_tag
*
* Input Parameters:
* addr - The address of the memory to get the tag.
*
* Returned Value:
* address tag
*
****************************************************************************/
uint8_t kasan_get_tag(FAR const void *addr);
/****************************************************************************
* Name: kasan_start
*