From e7e850a6a6d6c4ffa083f9b3916a323602c6f29a Mon Sep 17 00:00:00 2001 From: yinjiaming Date: Fri, 18 Mar 2022 07:11:12 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D3.1=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E4=B8=AD=E7=9A=84=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E3=80=90=E8=83=8C=E6=99=AF=E3=80=91=203.1=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E4=B8=AD=E6=9C=89=E4=B8=80=E4=BA=9B=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E9=9C=80=E8=A6=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【修改方案】 在可能内存泄露的地方进行了修改,在安全函数前加void转换 【影响】 对现有的产品编译不会有影响。 Signed-off-by: yinjiaming Change-Id: I8a37ecf7c8d81d24ebe153d0c0a7db008cc3e4b9 --- components/dynlink/los_dynlink.c | 17 ++++++++++------- components/shell/src/cmds/vfs_shellcmd.c | 1 + 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/components/dynlink/los_dynlink.c b/components/dynlink/los_dynlink.c index f62b1b4f..daeba81f 100644 --- a/components/dynlink/los_dynlink.c +++ b/components/dynlink/los_dynlink.c @@ -796,13 +796,13 @@ VOID *LOS_SoLoad(const CHAR *fileName, VOID *pool) return dso; ERR2: - LOS_MemFree(dso->pool, (VOID *)dso->loadBase); + (VOID)LOS_MemFree(dso->pool, (VOID *)dso->loadBase); ERR1: close(dso->fd); (VOID)LOS_MuxPost(g_dynlinkMux); - LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo->elfPhdr); - LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo); - LOS_MemFree(OS_SYS_MEM_ADDR, dso); + (VOID)LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo->elfPhdr); + (VOID)LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo); + (VOID)LOS_MemFree(OS_SYS_MEM_ADDR, dso); return NULL; } @@ -902,9 +902,12 @@ INT32 LOS_SoUnload(VOID *handle) LOS_ListDelete(&dso->dsoNode); (VOID)LOS_MuxPost(g_dynlinkMux); - LOS_MemFree(dso->pool, (VOID *)dso->loadBase); - LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo); - LOS_MemFree(OS_SYS_MEM_ADDR, dso); + (VOID)LOS_MemFree(dso->pool, (VOID *)dso->loadBase); + if (dso->dlInfo != NULL) { + (VOID)LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo->elfPhdr); + } + (VOID)LOS_MemFree(OS_SYS_MEM_ADDR, dso->dlInfo); + (VOID)LOS_MemFree(OS_SYS_MEM_ADDR, dso); return LOS_OK; ERR: diff --git a/components/shell/src/cmds/vfs_shellcmd.c b/components/shell/src/cmds/vfs_shellcmd.c index fe9efca8..9210e3c5 100755 --- a/components/shell/src/cmds/vfs_shellcmd.c +++ b/components/shell/src/cmds/vfs_shellcmd.c @@ -209,6 +209,7 @@ VOID OsLs(const CHAR *pathname) } } while (pdirent != NULL); + free(path); (VOID)closedir(d); } } -- GitLab