kasan:fix bug for kasan_mem_to_shadow
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
This commit is contained in:
parent
780abec239
commit
745611f800
|
@ -149,7 +149,7 @@ static FAR uintptr_t *kasan_mem_to_shadow(FAR const void *ptr, size_t size,
|
|||
size_t mod;
|
||||
size_t i;
|
||||
|
||||
if (g_region_init != KASAN_INIT_VALUE)
|
||||
if (g_region_init != KASAN_INIT_VALUE || size == 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ static FAR uintptr_t *kasan_mem_to_shadow(FAR const void *ptr, size_t size,
|
|||
{
|
||||
ret = kasan_find_mem(addr + i * KASAN_SHADOW_SCALE,
|
||||
KASAN_SHADOW_SCALE, bit);
|
||||
if (ret)
|
||||
if (ret == NULL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ static bool kasan_is_poisoned(FAR const void *addr, size_t size)
|
|||
FAR uintptr_t *p;
|
||||
unsigned int bit;
|
||||
|
||||
p = kasan_mem_to_shadow(addr + size - 1, 1, &bit);
|
||||
p = kasan_mem_to_shadow(addr, size, &bit);
|
||||
return p && ((*p >> bit) & 1);
|
||||
}
|
||||
|
||||
|
@ -271,7 +271,7 @@ static void kasan_set_poison(FAR const void *addr, size_t size,
|
|||
|
||||
flags = spin_lock_irqsave(&g_lock);
|
||||
|
||||
p = kasan_mem_to_shadow(addr, size, &bit);
|
||||
p = kasan_find_mem((uintptr_t)addr, size, &bit);
|
||||
DEBUGASSERT(p != NULL);
|
||||
|
||||
nbit = KASAN_BITS_PER_WORD - bit % KASAN_BITS_PER_WORD;
|
||||
|
|
Loading…
Reference in New Issue