summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2014-11-03 23:13:34 +0800
committerBernard Xiong <[email protected]>2014-11-03 23:13:34 +0800
commit566cff0ff5174d4ec4ef79631521c5c275e25322 (patch)
tree62549de361862720fb152a0c5a2c311d838c010c
parent00197fde12655c2e17ef7a2609767a8716b84d72 (diff)
parent28ff3ed18674f3b9d311d20c480cced6bc30e3fe (diff)
Merge pull request #370 from grissiom/romfs-nextv2.0.0_rc
romfs: fix a use-before-set bug on checking the dirent
-rw-r--r--components/dfs/filesystems/romfs/dfs_romfs.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/components/dfs/filesystems/romfs/dfs_romfs.c b/components/dfs/filesystems/romfs/dfs_romfs.c
index 86e7ac88a0..65fc331466 100644
--- a/components/dfs/filesystems/romfs/dfs_romfs.c
+++ b/components/dfs/filesystems/romfs/dfs_romfs.c
@@ -51,8 +51,8 @@ int dfs_romfs_ioctl(struct dfs_fd *file, int cmd, void *args)
rt_inline int check_dirent(struct romfs_dirent *dirent)
{
- if (!(dirent->type == ROMFS_DIRENT_FILE || dirent->type == ROMFS_DIRENT_DIR) ||
- (dirent->size == 0 || dirent->size == ~0))
+ if ((dirent->type != ROMFS_DIRENT_FILE && dirent->type != ROMFS_DIRENT_DIR)
+ || dirent->size == ~0)
return -1;
return 0;
}
@@ -191,7 +191,7 @@ int dfs_romfs_open(struct dfs_fd *file)
root_dirent = (struct romfs_dirent *)file->fs->data;
- if (check_dirent(dirent) != 0)
+ if (check_dirent(root_dirent) != 0)
return -DFS_STATUS_EIO;
if (file->flags & (DFS_O_CREAT | DFS_O_WRONLY | DFS_O_APPEND | DFS_O_TRUNC | DFS_O_RDWR))