feat:LMS模块及堆内存模块非安全函数安全合规整改

Close #I68LEO

Signed-off-by: huangjieliang <huangjieliang@huawei.com>
Change-Id: I6f1a8e647220170b00f771117bb018e5f82997ed
This commit is contained in:
huangjieliang
2023-01-03 21:55:25 +08:00
parent 3119d83a6a
commit c592fe73ec
8 changed files with 56 additions and 36 deletions

View File

@@ -837,6 +837,9 @@ STATIC UINT32 OsMemPoolInit(VOID *pool, UINT32 size)
struct OsMemPoolHead *poolHead = (struct OsMemPoolHead *)pool;
struct OsMemNodeHead *newNode = NULL;
struct OsMemNodeHead *endNode = NULL;
(VOID)memset_s(poolHead, sizeof(struct OsMemPoolHead), 0, sizeof(struct OsMemPoolHead));
#ifdef LOSCFG_KERNEL_LMS
UINT32 resize = 0;
if (g_lms != NULL) {
@@ -848,7 +851,6 @@ STATIC UINT32 OsMemPoolInit(VOID *pool, UINT32 size)
size = (resize == 0) ? size : resize;
}
#endif
(VOID)memset(poolHead, 0, sizeof(struct OsMemPoolHead));
LOS_SpinInit(&poolHead->spinlock);
poolHead->info.pool = pool;
@@ -885,9 +887,14 @@ STATIC UINT32 OsMemPoolInit(VOID *pool, UINT32 size)
}
#ifdef LOSCFG_MEM_MUL_POOL
STATIC VOID OsMemPoolDeinit(VOID *pool)
STATIC VOID OsMemPoolDeinit(const VOID *pool, UINT32 size)
{
(VOID)memset(pool, 0, sizeof(struct OsMemPoolHead));
#ifdef LOSCFG_KERNEL_LMS
if (g_lms != NULL) {
g_lms->deInit(pool);
}
#endif
(VOID)memset_s(pool, size, 0, sizeof(struct OsMemPoolHead));
}
STATIC UINT32 OsMemPoolAdd(VOID *pool, UINT32 size)
@@ -961,7 +968,7 @@ UINT32 LOS_MemInit(VOID *pool, UINT32 size)
#ifdef LOSCFG_MEM_MUL_POOL
if (OsMemPoolAdd(pool, size)) {
(VOID)OsMemPoolDeinit(pool);
(VOID)OsMemPoolDeInit(pool, size);
return OS_ERROR;
}
#endif
@@ -973,17 +980,21 @@ UINT32 LOS_MemInit(VOID *pool, UINT32 size)
#ifdef LOSCFG_MEM_MUL_POOL
UINT32 LOS_MemDeInit(VOID *pool)
{
if (pool == NULL) {
struct OsMemPoolHead *tmpPool = (struct OsMemPoolHead *)pool;
if ((tmpPool == NULL) ||
(tmpPool->info.pool != pool) ||
(tmpPool->info.totalSize <= OS_MEM_MIN_POOL_SIZE)) {
return OS_ERROR;
}
if (OsMemPoolDelete(pool)) {
if (OsMemPoolDelete(tmpPool)) {
return OS_ERROR;
}
OsMemPoolDeinit(pool);
OsMemPoolDeInit(tmpPool, tmpPool->info.totalSize);
OsHookCall(LOS_HOOK_TYPE_MEM_DEINIT, pool);
OsHookCall(LOS_HOOK_TYPE_MEM_DEINIT, tmpPool);
return LOS_OK;
}
@@ -1896,7 +1907,7 @@ UINT32 LOS_MemInfoGet(VOID *pool, LOS_MEM_POOL_STATUS *poolStatus)
return LOS_NOK;
}
(VOID)memset(poolStatus, 0, sizeof(LOS_MEM_POOL_STATUS));
(VOID)memset_s(poolStatus, sizeof(LOS_MEM_POOL_STATUS), 0, sizeof(LOS_MEM_POOL_STATUS));
struct OsMemNodeHead *tmpNode = NULL;
struct OsMemNodeHead *endNode = NULL;
@@ -2070,5 +2081,3 @@ BOOL OsMemIsHeapNode(const VOID *ptr)
#endif
return FALSE;
}