提交 c0d7b64b 编写于 作者: O openharmony_ci 提交者: Gitee

!151 feat: L0-L1 支持Lms轻量级地址消毒

Merge pull request !151 from LiteOS/lms_a
......@@ -98,6 +98,41 @@ char *basename(const char *);
#endif
#endif
#ifdef LOSCFG_KERNEL_LMS
void *__memset (void *, int, size_t);
void *__memcpy (void *__restrict, const void *__restrict, size_t);
void *__memmove (void *, const void *, size_t);
char *__strcat (char *__restrict, const char *__restrict);
char *__strncat (char *__restrict, const char *__restrict, size_t);
char *__strcpy (char *__restrict, const char *__restrict);
char *__strncpy (char *__restrict, const char *__restrict, size_t);
#if defined(__has_feature) /* clang */
#if !__has_feature(address_sanitizer)
#define memset(s, c, n) __memset(s, c, n)
#define memcpy(dst, src, len) __memcpy(dst, src, len)
#define memmove(dst, src, len) __memmove(dst, src, len)
#define strcat(dst, src) __strcat(dst, src)
#define strcpy(dst, src) __strcpy(dst, src)
#define strncat(dst, src, n) __strncat(dst, src, n)
#define strncpy(dst, src, n) __strncpy(dst, src, n)
#endif
#else /* gcc */
#if !defined(__SANITIZE_ADDRESS__)
#define memset(s, c, n) __memset(s, c, n)
#define memcpy(dst, src, len) __memcpy(dst, src, len)
#define memmove(dst, src, len) __memmove(dst, src, len)
#define strcat(dst, src) __strcat(dst, src)
#define strcpy(dst, src) __strcpy(dst, src)
#define strncat(dst, src, n) __strncat(dst, src, n)
#define strncpy(dst, src, n) __strncpy(dst, src, n)
#endif
#endif /* __has_feature */
#endif /* LOSCFG_KERNEL_LMS */
#ifdef __cplusplus
}
#endif
......
......@@ -6,7 +6,11 @@ typedef __attribute__((__may_alias__)) size_t WT;
#define WS (sizeof(WT))
#endif
#ifdef LOSCFG_KERNEL_LMS
__attribute__((no_sanitize_address)) void *__memmove(void *dest, const void *src, size_t n)
#else
void *memmove(void *dest, const void *src, size_t n)
#endif
{
char *d = dest;
const char *s = src;
......
#include <string.h>
#ifdef LOSCFG_KERNEL_LMS
__attribute__((no_sanitize_address)) char *__strcat(char *restrict dest, const char *restrict src)
#else
char *strcat(char *restrict dest, const char *restrict src)
#endif
{
strcpy(dest + strlen(dest), src);
return dest;
......
#include <string.h>
#ifdef LOSCFG_KERNEL_LMS
__attribute__((no_sanitize_address)) char *__strcpy(char *restrict dest, const char *restrict src)
#else
char *strcpy(char *restrict dest, const char *restrict src)
#endif
{
__stpcpy(dest, src);
return dest;
......
#include <string.h>
#ifdef LOSCFG_KERNEL_LMS
__attribute__((no_sanitize_address)) char *__strncat(char *restrict d, const char *restrict s, size_t n)
#else
char *strncat(char *restrict d, const char *restrict s, size_t n)
#endif
{
char *a = d;
d += strlen(d);
......
#include <string.h>
#ifdef LOSCFG_KERNEL_LMS
__attribute__((no_sanitize_address)) char *__strncpy(char *restrict d, const char *restrict s, size_t n)
#else
char *strncpy(char *restrict d, const char *restrict s, size_t n)
#endif
{
__stpncpy(d, s, n);
return d;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册