修复codex告警。

【背景】
1.components\fs\fs.c,g_fs判空顺序错误
2.components\shell\src\cmds\task_shellcmd.c,参数多余
3.components\shell\src\cmds\vfs_shellcmd.c,遗漏内存释放
4.kal\posix\src\pthread_mutex.c,timeout计算可能溢出

【修改方案】
1.调换g_fs判空顺序
2.去掉多余的参数
3.return前添加free函数
4.修改timeout计算方法防止溢出

【影响】
无

Change-Id: Ib6d56c92a0be01ca49222148c341db18afe72544
Signed-off-by: pef <cyd1997@126.com>
This commit is contained in:
pef 2021-11-06 06:52:25 +00:00
parent a55fd7c6d1
commit 923c05cd89
4 changed files with 15 additions and 15 deletions

View File

@ -347,14 +347,15 @@ ssize_t read(int fd, void *buf, size_t nbyte)
return recv(fd, buf, nbyte, 0); return recv(fd, buf, nbyte, 0);
} }
#endif #endif
if (g_fs->fsFops == NULL || g_fs->fsFops->Read == NULL) {
errno = ENOSYS;
return FS_FAILURE;
}
if (g_fs == NULL) { if (g_fs == NULL) {
errno = ENODEV; errno = ENODEV;
return FS_FAILURE; return FS_FAILURE;
} }
if (g_fs->fsFops == NULL || g_fs->fsFops->Read == NULL) {
errno = ENOSYS;
return FS_FAILURE;
}
return g_fs->fsFops->Read(fd, buf, nbyte); return g_fs->fsFops->Read(fd, buf, nbyte);
} }

View File

@ -89,7 +89,6 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas
{ {
const LosTaskCB *taskCB = NULL; const LosTaskCB *taskCB = NULL;
UINT32 loop; UINT32 loop;
UINT32 semId;
for (loop = 0; loop < g_taskMaxNum; ++loop) { for (loop = 0; loop < g_taskMaxNum; ++loop) {
taskCB = allTaskArray + loop; taskCB = allTaskArray + loop;
@ -97,12 +96,10 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas
continue; continue;
} }
semId = OsGetSemID(taskCB);
PRINTK("%-23s%-20p0x%-5x", taskCB->taskName, taskCB->taskEntry, taskCB->taskID); PRINTK("%-23s%-20p0x%-5x", taskCB->taskName, taskCB->taskEntry, taskCB->taskID);
PRINTK("%-11u%-13s0x%-11x 0x%-8x 0x%-10x ", taskCB->priority, PRINTK("%-11u%-13s0x%-11x 0x%-8x 0x%-10x ", taskCB->priority,
OsShellCmdConvertTskStatus(taskCB->taskStatus), taskCB->stackSize, OsShellCmdConvertTskStatus(taskCB->taskStatus), taskCB->stackSize,
taskCB->stackPointer, taskCB->topOfStack, semId); taskCB->stackPointer, taskCB->topOfStack);
PRINTK("\n"); PRINTK("\n");
} }
} }

View File

@ -276,6 +276,7 @@ int OsShellCmdCat(int argc, const char **argv)
if (fd == -1) { if (fd == -1) {
ret = -1; ret = -1;
free(fullpath);
return ret; return ret;
} }

View File

@ -38,6 +38,7 @@
#define OS_SYS_NS_PER_MSECOND 1000000 #define OS_SYS_NS_PER_MSECOND 1000000
#define OS_SYS_NS_PER_SECOND 1000000000 #define OS_SYS_NS_PER_SECOND 1000000000
#define OS_UINT_MAX (~0U)
static inline int MapError(UINT32 err) static inline int MapError(UINT32 err)
{ {
@ -99,8 +100,7 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex)
int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTimeout) int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTimeout)
{ {
UINT32 ret; UINT32 ret;
UINT32 timeout; INT64 timeoutMs;
UINT64 timeoutNs;
struct timespec curTime = {0}; struct timespec curTime = {0};
if ((mutex->magic != _MUX_MAGIC) || (absTimeout->tv_nsec < 0) || (absTimeout->tv_nsec >= OS_SYS_NS_PER_SECOND)) { if ((mutex->magic != _MUX_MAGIC) || (absTimeout->tv_nsec < 0) || (absTimeout->tv_nsec >= OS_SYS_NS_PER_SECOND)) {
return EINVAL; return EINVAL;
@ -115,12 +115,13 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTi
if (ret != LOS_OK) { if (ret != LOS_OK) {
return EINVAL; return EINVAL;
} }
timeoutNs = (absTimeout->tv_sec - curTime.tv_sec) * OS_SYS_NS_PER_SECOND + (absTimeout->tv_nsec - curTime.tv_nsec); timeoutMs = (absTimeout->tv_sec - curTime.tv_sec) * OS_SYS_MS_PER_SECOND +
if (timeoutNs <= 0) { (absTimeout->tv_nsec - curTime.tv_nsec) / OS_SYS_NS_PER_MSECOND;
return ETIMEDOUT; if (timeoutMs < 0 || timeoutMs >= OS_UINT_MAX) {
return EINVAL;
} }
timeout = (timeoutNs + (OS_SYS_NS_PER_MSECOND - 1)) / OS_SYS_NS_PER_MSECOND;
ret = LOS_MuxPend(mutex->handle, timeout); ret = LOS_MuxPend(mutex->handle, (UINT32)timeoutMs);
return MapError(ret); return MapError(ret);
} }