diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index 31c66c9bd8c699182e5d2fa2fb41862e8cb946db..4d49f931934312823a1ff3217776dd2a50c227c6 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -3349,8 +3349,8 @@ int sys_getdents(int fd, struct libc_dirent *dirp, size_t nbytes) return -1; } dfs_fd = fd_get(fd); - ret = dfs_file_getdents(dfs_fd, rtt_dirp, nbytes); - if (ret) + ret = dfs_file_getdents(dfs_fd, rtt_dirp, rtt_nbytes); + if (ret > 0) { size_t i = 0; cnt = ret / sizeof(struct dirent); @@ -3420,6 +3420,13 @@ int sys_access(const char *filename, int mode) ret = -1; } + len = rt_strlen(filename); + if (!len) + { + rt_set_errno(EINVAL); + return -1; + } + kname = (char *)kmem_get(len + 1); if (!ret && !kname) {