浏览代码

[bug][dfs] rt_strlen(name) + 1) -> DFS_PATH_MAX

Meco Man 4 年之前
父节点
当前提交
d1d9c492f8

+ 1 - 1
components/dfs/filesystems/elmfat/dfs_elm.c

@@ -647,7 +647,7 @@ int dfs_elm_getdents(struct dfs_fd *file, struct dirent *dirp, uint32_t count)
 
         d->d_namlen = (rt_uint8_t)rt_strlen(fn);
         d->d_reclen = (rt_uint16_t)sizeof(struct dirent);
-        rt_strncpy(d->d_name, fn, rt_strlen(fn) + 1);
+        rt_strncpy(d->d_name, fn, DFS_PATH_MAX);
 
         index ++;
         if (index * sizeof(struct dirent) >= count)

+ 1 - 1
components/dfs/filesystems/nfs/dfs_nfs.c

@@ -1119,7 +1119,7 @@ int nfs_getdents(struct dfs_fd *file, struct dirent *dirp, uint32_t count)
 
         d->d_namlen = rt_strlen(name);
         d->d_reclen = (rt_uint16_t)sizeof(struct dirent);
-        rt_strncpy(d->d_name, name, rt_strlen(name) + 1);
+        rt_strncpy(d->d_name, name, DFS_PATH_MAX);
 
         index ++;
         if (index * sizeof(struct dirent) >= count)

+ 1 - 1
components/dfs/filesystems/romfs/dfs_romfs.c

@@ -276,7 +276,7 @@ int dfs_romfs_getdents(struct dfs_fd *file, struct dirent *dirp, uint32_t count)
 
         d->d_namlen = rt_strlen(name);
         d->d_reclen = (rt_uint16_t)sizeof(struct dirent);
-        rt_strncpy(d->d_name, name, rt_strlen(name) + 1);
+        rt_strncpy(d->d_name, name, DFS_PATH_MAX);
 
         /* move to next position */
         ++ file->pos;