修复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:
parent
a55fd7c6d1
commit
923c05cd89
|
@ -347,14 +347,15 @@ ssize_t read(int fd, void *buf, size_t nbyte)
|
|||
return recv(fd, buf, nbyte, 0);
|
||||
}
|
||||
#endif
|
||||
if (g_fs->fsFops == NULL || g_fs->fsFops->Read == NULL) {
|
||||
errno = ENOSYS;
|
||||
return FS_FAILURE;
|
||||
}
|
||||
if (g_fs == NULL) {
|
||||
errno = ENODEV;
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -89,7 +89,6 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas
|
|||
{
|
||||
const LosTaskCB *taskCB = NULL;
|
||||
UINT32 loop;
|
||||
UINT32 semId;
|
||||
|
||||
for (loop = 0; loop < g_taskMaxNum; ++loop) {
|
||||
taskCB = allTaskArray + loop;
|
||||
|
@ -97,12 +96,10 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas
|
|||
continue;
|
||||
}
|
||||
|
||||
semId = OsGetSemID(taskCB);
|
||||
|
||||
PRINTK("%-23s%-20p0x%-5x", taskCB->taskName, taskCB->taskEntry, taskCB->taskID);
|
||||
PRINTK("%-11u%-13s0x%-11x 0x%-8x 0x%-10x ", taskCB->priority,
|
||||
OsShellCmdConvertTskStatus(taskCB->taskStatus), taskCB->stackSize,
|
||||
taskCB->stackPointer, taskCB->topOfStack, semId);
|
||||
taskCB->stackPointer, taskCB->topOfStack);
|
||||
PRINTK("\n");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -276,6 +276,7 @@ int OsShellCmdCat(int argc, const char **argv)
|
|||
|
||||
if (fd == -1) {
|
||||
ret = -1;
|
||||
free(fullpath);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
|
||||
#define OS_SYS_NS_PER_MSECOND 1000000
|
||||
#define OS_SYS_NS_PER_SECOND 1000000000
|
||||
#define OS_UINT_MAX (~0U)
|
||||
|
||||
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)
|
||||
{
|
||||
UINT32 ret;
|
||||
UINT32 timeout;
|
||||
UINT64 timeoutNs;
|
||||
INT64 timeoutMs;
|
||||
struct timespec curTime = {0};
|
||||
if ((mutex->magic != _MUX_MAGIC) || (absTimeout->tv_nsec < 0) || (absTimeout->tv_nsec >= OS_SYS_NS_PER_SECOND)) {
|
||||
return EINVAL;
|
||||
|
@ -115,12 +115,13 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTi
|
|||
if (ret != LOS_OK) {
|
||||
return EINVAL;
|
||||
}
|
||||
timeoutNs = (absTimeout->tv_sec - curTime.tv_sec) * OS_SYS_NS_PER_SECOND + (absTimeout->tv_nsec - curTime.tv_nsec);
|
||||
if (timeoutNs <= 0) {
|
||||
return ETIMEDOUT;
|
||||
timeoutMs = (absTimeout->tv_sec - curTime.tv_sec) * OS_SYS_MS_PER_SECOND +
|
||||
(absTimeout->tv_nsec - curTime.tv_nsec) / OS_SYS_NS_PER_MSECOND;
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue