<fix>
修复报警信息,为以下修复点 1、修复空指针未判断 2、修复open后未及时close 导致内存泄露 3、修复strdup后未free 4、修复赋值后未使用等问题 5、修复编码中判断条件中无符号变量小于零的情况 Signed-off-by: xiacong <xiacong4@huawei.com> Change-Id: I13d046141afeb8a116e6a04304a3793bf8e12bee Signed-off-by: xiacong <xiacong4@huawei.com>
This commit is contained in:
parent
044cf59583
commit
784429d0dc
|
@ -91,7 +91,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
|
||||||
|
|
||||||
STATIC UINT64 SysTickCycleGet(UINT32 *period)
|
STATIC UINT64 SysTickCycleGet(UINT32 *period)
|
||||||
{
|
{
|
||||||
UINT32 hwCycle = 0;
|
UINT32 hwCycle = 0;
|
||||||
UINT32 intSave = LOS_IntLock();
|
UINT32 intSave = LOS_IntLock();
|
||||||
UINT32 val = SysTick->VAL;
|
UINT32 val = SysTick->VAL;
|
||||||
*period = SysTick->LOAD;
|
*period = SysTick->LOAD;
|
||||||
|
|
|
@ -51,6 +51,7 @@ VOID HalSecureSVCHandler(UINT32 svcID, UINTPTR arg)
|
||||||
HalSecureContextLoad(g_secureContext);
|
HalSecureContextLoad(g_secureContext);
|
||||||
break;
|
break;
|
||||||
case OS_SVC_FREE_SECURE_CONTEXT:
|
case OS_SVC_FREE_SECURE_CONTEXT:
|
||||||
|
LOS_ASSERT(g_secureContext != NULL);
|
||||||
HalSecureContextFree(g_secureContext);
|
HalSecureContextFree(g_secureContext);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -51,6 +51,7 @@ VOID HalSecureSVCHandler(UINT32 svcID, UINTPTR arg)
|
||||||
HalSecureContextLoad(g_secureContext);
|
HalSecureContextLoad(g_secureContext);
|
||||||
break;
|
break;
|
||||||
case OS_SVC_FREE_SECURE_CONTEXT:
|
case OS_SVC_FREE_SECURE_CONTEXT:
|
||||||
|
LOS_ASSERT(g_secureContext != NULL);
|
||||||
HalSecureContextFree(g_secureContext);
|
HalSecureContextFree(g_secureContext);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -91,7 +91,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
|
||||||
|
|
||||||
STATIC UINT64 SysTickCycleGet(UINT32 *period)
|
STATIC UINT64 SysTickCycleGet(UINT32 *period)
|
||||||
{
|
{
|
||||||
UINT32 hwCycle = 0;
|
UINT32 hwCycle = 0;
|
||||||
UINT32 intSave = LOS_IntLock();
|
UINT32 intSave = LOS_IntLock();
|
||||||
UINT32 val = SysTick->VAL;
|
UINT32 val = SysTick->VAL;
|
||||||
*period = SysTick->LOAD;
|
*period = SysTick->LOAD;
|
||||||
|
|
|
@ -51,6 +51,7 @@ VOID HalSecureSVCHandler(UINT32 svcID, UINTPTR arg)
|
||||||
HalSecureContextLoad(g_secureContext);
|
HalSecureContextLoad(g_secureContext);
|
||||||
break;
|
break;
|
||||||
case OS_SVC_FREE_SECURE_CONTEXT:
|
case OS_SVC_FREE_SECURE_CONTEXT:
|
||||||
|
LOS_ASSERT(g_secureContext != NULL);
|
||||||
HalSecureContextFree(g_secureContext);
|
HalSecureContextFree(g_secureContext);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -51,6 +51,7 @@ VOID HalSecureSVCHandler(UINT32 svcID, UINTPTR arg)
|
||||||
HalSecureContextLoad(g_secureContext);
|
HalSecureContextLoad(g_secureContext);
|
||||||
break;
|
break;
|
||||||
case OS_SVC_FREE_SECURE_CONTEXT:
|
case OS_SVC_FREE_SECURE_CONTEXT:
|
||||||
|
LOS_ASSERT(g_secureContext != NULL);
|
||||||
HalSecureContextFree(g_secureContext);
|
HalSecureContextFree(g_secureContext);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -612,7 +612,7 @@ LITE_OS_SEC_TEXT_INIT VOID HalHwiInit(VOID)
|
||||||
HalHwiHandleReInit((UINT32)&g_hwiForm);
|
HalHwiHandleReInit((UINT32)&g_hwiForm);
|
||||||
|
|
||||||
HalSetVbr((UINT32)&g_hwiForm);
|
HalSetVbr((UINT32)&g_hwiForm);
|
||||||
for (int i = 0; i < BYTES_OF_128_INT; i++) {
|
for (i = 0; i < BYTES_OF_128_INT; i++) {
|
||||||
VIC_REG->IABR[i] = 0x0;
|
VIC_REG->IABR[i] = 0x0;
|
||||||
VIC_REG->ICPR[i] = MASK_32_BITS;
|
VIC_REG->ICPR[i] = MASK_32_BITS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -902,6 +902,10 @@ static int MapToPosixRet(int ret)
|
||||||
/* POSIX interface */
|
/* POSIX interface */
|
||||||
int LOS_Open(const char *path, int flags, ...)
|
int LOS_Open(const char *path, int flags, ...)
|
||||||
{
|
{
|
||||||
|
if (path == NULL) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return (int)LOS_NOK;
|
||||||
|
}
|
||||||
#ifdef LOSCFG_RANDOM_DEV
|
#ifdef LOSCFG_RANDOM_DEV
|
||||||
unsigned flagMask = O_RDONLY | O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_LARGEFILE \
|
unsigned flagMask = O_RDONLY | O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_LARGEFILE \
|
||||||
| O_TRUNC | O_EXCL | O_DIRECTORY;
|
| O_TRUNC | O_EXCL | O_DIRECTORY;
|
||||||
|
@ -952,7 +956,7 @@ int LOS_Open(const char *path, int flags, ...)
|
||||||
FREE_AND_SET_NULL(canonicalPath);
|
FREE_AND_SET_NULL(canonicalPath);
|
||||||
#endif
|
#endif
|
||||||
#if (LOSCFG_POSIX_PIPE_API == 1)
|
#if (LOSCFG_POSIX_PIPE_API == 1)
|
||||||
if ((path != NULL) && !strncmp(path, PIPE_DEV_PATH, strlen(PIPE_DEV_PATH))) {
|
if (!strncmp(path, PIPE_DEV_PATH, strlen(PIPE_DEV_PATH))) {
|
||||||
return PipeOpen(path, flags, PIPE_DEV_FD);
|
return PipeOpen(path, flags, PIPE_DEV_FD);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1149,8 +1153,9 @@ int OsFcntl(int fd, int cmd, va_list ap)
|
||||||
ret = VfsVfcntl(filep, cmd, ap);
|
ret = VfsVfcntl(filep, cmd, ap);
|
||||||
VfsDetachFile(filep);
|
VfsDetachFile(filep);
|
||||||
} else {
|
} else {
|
||||||
|
#ifndef LOSCFG_NET_LWIP_SACK
|
||||||
ret = -EBADF;
|
ret = -EBADF;
|
||||||
#ifdef LOSCFG_NET_LWIP_SACK
|
#else
|
||||||
int arg = va_arg(ap, int);
|
int arg = va_arg(ap, int);
|
||||||
ret = lwip_fcntl(fd, (long)cmd, arg);
|
ret = lwip_fcntl(fd, (long)cmd, arg);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1182,8 +1187,9 @@ int OsIoctl(int fd, int req, va_list ap)
|
||||||
if (fd < CONFIG_NFILE_DESCRIPTORS) {
|
if (fd < CONFIG_NFILE_DESCRIPTORS) {
|
||||||
ret = VfsIoctl(fd, req, ap);
|
ret = VfsIoctl(fd, req, ap);
|
||||||
} else {
|
} else {
|
||||||
|
#ifndef LOSCFG_NET_LWIP_SACK
|
||||||
ret = -EBADF;
|
ret = -EBADF;
|
||||||
#ifdef LOSCFG_NET_LWIP_SACK
|
#else
|
||||||
UINTPTR arg = va_arg(ap, UINTPTR);
|
UINTPTR arg = va_arg(ap, UINTPTR);
|
||||||
ret = lwip_ioctl(fd, (long)req, (void *)arg);
|
ret = lwip_ioctl(fd, (long)req, (void *)arg);
|
||||||
#endif /* LOSCFG_NET_LWIP_SACK */
|
#endif /* LOSCFG_NET_LWIP_SACK */
|
||||||
|
|
|
@ -47,7 +47,7 @@ int GetPartIdByPartName(const char *partName)
|
||||||
|
|
||||||
/* the character next to p is the partId */
|
/* the character next to p is the partId */
|
||||||
char *p = strrchr(partName, 'p');
|
char *p = strrchr(partName, 'p');
|
||||||
if (p + 1 != NULL) {
|
if (p != NULL) {
|
||||||
return atoi(p + 1);
|
return atoi(p + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -529,7 +529,7 @@ u32_t OsShellPing(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
u32_t i = 0;
|
u32_t i = 0;
|
||||||
u32_t count = 0;
|
u32_t count;
|
||||||
int count_set = 0;
|
int count_set = 0;
|
||||||
u32_t interval = 1000; /* default ping interval */
|
u32_t interval = 1000; /* default ping interval */
|
||||||
u32_t data_len = 48; /* default data length */
|
u32_t data_len = 48; /* default data length */
|
||||||
|
|
|
@ -67,7 +67,7 @@ int SysUserTaskCreate(unsigned long entry, unsigned long userArea, unsigned long
|
||||||
|
|
||||||
int SysSchedSetScheduler(unsigned int tid, int policy, int priority)
|
int SysSchedSetScheduler(unsigned int tid, int policy, int priority)
|
||||||
{
|
{
|
||||||
if ((tid <= 0) || (tid > LOSCFG_BASE_CORE_TSK_LIMIT)) {
|
if ((tid == 0) || (tid > LOSCFG_BASE_CORE_TSK_LIMIT)) {
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ int *SysSchedGetArea(unsigned int tid)
|
||||||
unsigned int intSave;
|
unsigned int intSave;
|
||||||
int *area = NULL;
|
int *area = NULL;
|
||||||
|
|
||||||
if ((tid <= 0) || (tid > LOSCFG_BASE_CORE_TSK_LIMIT)) {
|
if ((tid == 0) || (tid > LOSCFG_BASE_CORE_TSK_LIMIT)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -544,11 +544,6 @@ STATIC INT32 OsShellCmdDoRmdir(const CHAR *pathname)
|
||||||
}
|
}
|
||||||
if (strcmp(dirent->d_name, "..") && strcmp(dirent->d_name, ".")) {
|
if (strcmp(dirent->d_name, "..") && strcmp(dirent->d_name, ".")) {
|
||||||
size_t fullPathBufSize = strlen(pathname) + strlen(dirent->d_name) + SEPARATOR_EOF_LEN;
|
size_t fullPathBufSize = strlen(pathname) + strlen(dirent->d_name) + SEPARATOR_EOF_LEN;
|
||||||
if (fullPathBufSize <= 0) {
|
|
||||||
PRINTK("buffer size is invalid!\n");
|
|
||||||
(VOID)closedir(d);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
fullpath = (CHAR *)malloc(fullPathBufSize);
|
fullpath = (CHAR *)malloc(fullPathBufSize);
|
||||||
if (fullpath == NULL) {
|
if (fullpath == NULL) {
|
||||||
PRINTK("malloc failure!\n");
|
PRINTK("malloc failure!\n");
|
||||||
|
|
|
@ -978,21 +978,17 @@ osStatus_t osEventFlagsDelete(osEventFlagsId_t ef_id)
|
||||||
{
|
{
|
||||||
PEVENT_CB_S pstEventCB = (PEVENT_CB_S)ef_id;
|
PEVENT_CB_S pstEventCB = (PEVENT_CB_S)ef_id;
|
||||||
UINT32 intSave;
|
UINT32 intSave;
|
||||||
osStatus_t ret;
|
osStatus_t ret = osOK;
|
||||||
if (OS_INT_ACTIVE) {
|
if (OS_INT_ACTIVE) {
|
||||||
return osErrorISR;
|
return osErrorISR;
|
||||||
}
|
}
|
||||||
intSave = LOS_IntLock();
|
intSave = LOS_IntLock();
|
||||||
if (LOS_EventDestroy(pstEventCB) == LOS_OK) {
|
if (LOS_EventDestroy(pstEventCB) != LOS_OK) {
|
||||||
ret = osOK;
|
|
||||||
} else {
|
|
||||||
ret = osErrorParameter;
|
ret = osErrorParameter;
|
||||||
}
|
}
|
||||||
LOS_IntRestore(intSave);
|
LOS_IntRestore(intSave);
|
||||||
|
|
||||||
if (LOS_MemFree(m_aucSysMem0, (void *)pstEventCB) == LOS_OK) {
|
if (LOS_MemFree(m_aucSysMem0, (void *)pstEventCB) != LOS_OK) {
|
||||||
ret = osOK;
|
|
||||||
} else {
|
|
||||||
ret = osErrorParameter;
|
ret = osErrorParameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -501,7 +501,7 @@ time_t time(time_t *timer)
|
||||||
{
|
{
|
||||||
UINT64 usec = 0;
|
UINT64 usec = 0;
|
||||||
time_t sec;
|
time_t sec;
|
||||||
INT32 rtcRet = 0;
|
INT32 rtcRet;
|
||||||
|
|
||||||
if (g_rtcTimeFunc.RtcGetTimeHook != NULL) {
|
if (g_rtcTimeFunc.RtcGetTimeHook != NULL) {
|
||||||
rtcRet = g_rtcTimeFunc.RtcGetTimeHook(&usec);
|
rtcRet = g_rtcTimeFunc.RtcGetTimeHook(&usec);
|
||||||
|
|
|
@ -1337,10 +1337,12 @@ LITE_TEST_CASE(PosixFsFuncTestSuite, testFsReaddir002, Function | MediumTest | L
|
||||||
|
|
||||||
dResult = readdir(dirp);
|
dResult = readdir(dirp);
|
||||||
TEST_ASSERT_NOT_NULL(dirp);
|
TEST_ASSERT_NOT_NULL(dirp);
|
||||||
|
TEST_ASSERT_NOT_NULL(dResult);
|
||||||
tellDir0 = dResult->d_off;
|
tellDir0 = dResult->d_off;
|
||||||
|
|
||||||
dResult = readdir(dirp);
|
dResult = readdir(dirp);
|
||||||
TEST_ASSERT_NOT_NULL(dirp);
|
TEST_ASSERT_NOT_NULL(dirp);
|
||||||
|
TEST_ASSERT_NOT_NULL(dResult);
|
||||||
tellDir1 = dResult->d_off;
|
tellDir1 = dResult->d_off;
|
||||||
|
|
||||||
TEST_ASSERT_TRUE(tellDir0 == tellDir1);
|
TEST_ASSERT_TRUE(tellDir0 == tellDir1);
|
||||||
|
@ -1496,9 +1498,8 @@ LITE_TEST_CASE(PosixFsFuncTestSuite, testFsStat002, Function | MediumTest | Leve
|
||||||
TEST_ASSERT_TRUE(fd != -1);
|
TEST_ASSERT_TRUE(fd != -1);
|
||||||
|
|
||||||
size = write(fd, writeBuf, sizeof(writeBuf));
|
size = write(fd, writeBuf, sizeof(writeBuf));
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
|
||||||
|
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
|
TEST_ASSERT_TRUE(size != -1);
|
||||||
|
|
||||||
ret = stat(tmpFileName, &buf);
|
ret = stat(tmpFileName, &buf);
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
TEST_ASSERT_TRUE(ret != -1);
|
||||||
|
@ -1526,8 +1527,8 @@ LITE_TEST_CASE(PosixFsFuncTestSuite, testFsStat003, Function | MediumTest | Leve
|
||||||
TEST_ASSERT_TRUE(fd != -1);
|
TEST_ASSERT_TRUE(fd != -1);
|
||||||
|
|
||||||
size = write(fd, writeBuf, sizeof(writeBuf));
|
size = write(fd, writeBuf, sizeof(writeBuf));
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
|
TEST_ASSERT_TRUE(size != -1);
|
||||||
|
|
||||||
ret = stat(tmpFileName, &buf);
|
ret = stat(tmpFileName, &buf);
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
TEST_ASSERT_TRUE(ret != -1);
|
||||||
|
@ -1562,18 +1563,24 @@ LITE_TEST_CASE(PosixFsFuncTestSuite, testFsWrite001, Function | MediumTest | Lev
|
||||||
TEST_ASSERT_TRUE(fd != -1);
|
TEST_ASSERT_TRUE(fd != -1);
|
||||||
|
|
||||||
ret = write(fd, writeBuf, TEST_RW_SIZE);
|
ret = write(fd, writeBuf, TEST_RW_SIZE);
|
||||||
|
if (ret == -1) {
|
||||||
|
(void)close(fd);
|
||||||
|
}
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
TEST_ASSERT_TRUE(ret != -1);
|
||||||
|
|
||||||
reLseek = lseek(fd, 0, SEEK_CUR);
|
reLseek = lseek(fd, 0, SEEK_CUR);
|
||||||
|
|
||||||
ret = write(fd, writeBuf, TEST_RW_SIZE);
|
ret = write(fd, writeBuf, TEST_RW_SIZE);
|
||||||
|
if (ret == -1) {
|
||||||
|
(void)close(fd);
|
||||||
|
}
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
TEST_ASSERT_TRUE(ret != -1);
|
||||||
|
|
||||||
reLseek = lseek(fd, 0, SEEK_CUR);
|
reLseek = lseek(fd, 0, SEEK_CUR);
|
||||||
|
(void)close(fd);
|
||||||
|
|
||||||
TEST_ASSERT_TRUE((TEST_RW_SIZE + TEST_RW_SIZE) == (unsigned int)reLseek);
|
TEST_ASSERT_TRUE((TEST_RW_SIZE + TEST_RW_SIZE) == (unsigned int)reLseek);
|
||||||
|
|
||||||
(void)close(fd);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1598,9 +1605,8 @@ LITE_TEST_CASE(PosixFsFuncTestSuite, testFsWrite002, Function | MediumTest | Lev
|
||||||
for (i = 0; i < TEST_LOOPUP_TIME; i++) {
|
for (i = 0; i < TEST_LOOPUP_TIME; i++) {
|
||||||
ret = write(fd, writeBuf, sizeof(writeBuf));
|
ret = write(fd, writeBuf, sizeof(writeBuf));
|
||||||
}
|
}
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
|
||||||
|
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
|
TEST_ASSERT_TRUE(ret != -1);
|
||||||
|
|
||||||
ret = stat(tmpFileName, &statbuf);
|
ret = stat(tmpFileName, &statbuf);
|
||||||
TEST_ASSERT_TRUE(ret != -1);
|
TEST_ASSERT_TRUE(ret != -1);
|
||||||
|
|
|
@ -142,6 +142,7 @@ LITE_TEST_CASE(PosixStringFuncTestSuite, testStrStrdup001, Function | MediumTest
|
||||||
char src[] = "hello world !";
|
char src[] = "hello world !";
|
||||||
char *ret = strdup(src);
|
char *ret = strdup(src);
|
||||||
TEST_ASSERT_EQUAL_CHAR_ARRAY(ret, src, sizeof(src) / sizeof(src[0]));
|
TEST_ASSERT_EQUAL_CHAR_ARRAY(ret, src, sizeof(src) / sizeof(src[0]));
|
||||||
|
free(ret);
|
||||||
|
|
||||||
char srcS[] = "This is String1";
|
char srcS[] = "This is String1";
|
||||||
ret = strdup(srcS);
|
ret = strdup(srcS);
|
||||||
|
|
Loading…
Reference in New Issue