32#include "los_lms_pri.h"
34ATTRIBUTE_NO_SANITIZE_ADDRESS
void LmsFree(
void *ptr)
40 size_t allocSize = malloc_usable_size(ptr);
41 uintptr_t shadowAddr, offset;
46 uint32_t acShadowValue;
48 if (acShadowValue != LMS_SHADOW_ACCESSABLE) {
49 char erroMode = (acShadowValue == LMS_SHADOW_AFTERFREE ? FREE_ERRORMODE : UNKNOWN_ERROR);
54 LMS_OUTPUT_ERROR(
"Error! Free an unallocated memory:%p!\n", ptr);
59 LmsSetShadowValue((uintptr_t)ptr, (uintptr_t)ptr + allocSize, LMS_SHADOW_AFTERFREE_U8);
65ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsMalloc(
size_t size)
74ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsRealloc(
void *ptr,
size_t size)
83ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsCalloc(
size_t m,
size_t n)
92ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsValloc(
size_t size)
140ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsMemset(
void *p,
int n,
size_t size)
147ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
__wrap_memset(
void *p,
int n,
size_t size)
152ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsMemcpy(
void *__restrict dest,
const void *__restrict src,
size_t size)
160ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
__wrap_memcpy(
void *__restrict dest,
const void *__restrict src,
size_t size)
165ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
LmsMemmove(
void *dest,
const void *src,
size_t len)
173ATTRIBUTE_NO_SANITIZE_ADDRESS
void *
__wrap_memmove(
void *dest,
const void *src,
size_t len)
178ATTRIBUTE_NO_SANITIZE_ADDRESS
char *
LmsStrcat(
char *s,
const char *append)
180 if ((s == NULL) || (append == NULL)) {
185 for (; *s !=
'\0'; ++s) {
192ATTRIBUTE_NO_SANITIZE_ADDRESS
char *
__wrap_strcat(
char *s,
const char *append)
197ATTRIBUTE_NO_SANITIZE_ADDRESS
char *
LmsStrcpy(
char *dest,
const char *src)
199 if ((dest == NULL) || (src == NULL)) {
207ATTRIBUTE_NO_SANITIZE_ADDRESS
char *
__wrap_strcpy(
char *dest,
const char *src)
VOID __asan_loadN_noabort(UINTPTR p, UINT32 size)
VOID __asan_storeN_noabort(UINTPTR p, UINT32 size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_aligned_alloc(size_t align, size_t len)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_valloc(size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsMemmove(void *dest, const void *src, size_t len)
ATTRIBUTE_NO_SANITIZE_ADDRESS char * LmsStrcpy(char *dest, const char *src)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsMemcpy(void *__restrict dest, const void *__restrict src, size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsMemset(void *p, int n, size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsRealloc(void *ptr, size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_realloc(void *p, size_t n)
ATTRIBUTE_NO_SANITIZE_ADDRESS char * __wrap_strcat(char *s, const char *append)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_memmove(void *dest, const void *src, size_t len)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_memset(void *p, int n, size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsCalloc(size_t m, size_t n)
ATTRIBUTE_NO_SANITIZE_ADDRESS char * LmsStrcat(char *s, const char *append)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsMalloc(size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsAlignedAlloc(size_t align, size_t len)
ATTRIBUTE_NO_SANITIZE_ADDRESS char * __wrap_strcpy(char *dest, const char *src)
ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsFree(void *ptr)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsValloc(size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_calloc(size_t m, size_t n)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_malloc(size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * __wrap_memcpy(void *__restrict dest, const void *__restrict src, size_t size)
ATTRIBUTE_NO_SANITIZE_ADDRESS void __wrap_free(void *ptr)
ATTRIBUTE_NO_SANITIZE_ADDRESS void * LmsTagMem(void *ptr, size_t origSize)
void LmsCheckValid(const char *dest, const char *src)
ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsSetShadowValue(uintptr_t startAddr, uintptr_t endAddr, char value)
ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsGetShadowValue(uintptr_t addr, uint32_t *shadowValue)
ATTRIBUTE_NO_SANITIZE_ADDRESS uint32_t LmsIsShadowAddrMapped(uintptr_t sdStartAddr, uintptr_t sdEndAddr)
ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsMem2Shadow(uintptr_t memAddr, uintptr_t *shadowAddr, uint32_t *shadowOffset)
ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsReportError(uintptr_t p, size_t size, uint32_t errMod)
pthread_mutex_t g_lmsMutex
char * __real_strcpy(char *, const char *)
static ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsLock(pthread_mutex_t *lock)
void * __real_valloc(size_t)
void * __real_memcpy(void *__restrict, const void *__restrict, size_t)
void * __real_calloc(size_t, size_t)
char * __real_strcat(char *, const char *)
void * __real_memmove(void *, const void *, size_t)
void * __real_aligned_alloc(size_t, size_t)
void * __real_malloc(size_t)
void * __real_realloc(void *, size_t)
void * __real_memset(void *, int, size_t)
static ATTRIBUTE_NO_SANITIZE_ADDRESS void LmsUnlock(pthread_mutex_t *lock)