diff options
author | Huang Jianan <huangjianan@oppo.com> | 2020-11-27 19:06:16 +0800 |
---|---|---|
committer | Gao Xiang <hsiangkao@aol.com> | 2020-11-27 21:25:27 +0800 |
commit | 8ddcc9493e8515fe888ad53c683ba8e8b96e5eb4 (patch) | |
tree | 4cfd5241bd0c6985cc7ec52b238fa83efee9970e | |
parent | 326f5dbf27614a0667763103647b11630e0fe922 (diff) | |
download | erofs-utils-8ddcc9493e8515fe888ad53c683ba8e8b96e5eb4.tar.gz |
erofs-utils: fix use-after-free in closedir
No need to closedir _dir again since it has been released.
Signed-off-by: Huang Jianan <huangjianan@oppo.com>
Signed-off-by: Guo Weichao <guoweichao@oppo.com>
Link: https://lore.kernel.org/r/20201127110616.34232-1-huangjianan@oppo.com
Reviewed-by: Gao Xiang <hsiangkao@redhat.com>
[ Gao Xiang: slightly fix the subject of the patch. ]
Signed-off-by: Gao Xiang <hsiangkao@aol.com>
-rw-r--r-- | lib/inode.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/inode.c b/lib/inode.c index eb2e0f2..388d21d 100644 --- a/lib/inode.c +++ b/lib/inode.c @@ -958,11 +958,11 @@ struct erofs_inode *erofs_mkfs_build_tree(struct erofs_inode *dir) ret = erofs_prepare_dir_file(dir); if (ret) - goto err_closedir; + goto err; ret = erofs_prepare_inode_buffer(dir); if (ret) - goto err_closedir; + goto err; if (IS_ROOT(dir)) erofs_fixup_meta_blkaddr(dir); @@ -988,7 +988,7 @@ struct erofs_inode *erofs_mkfs_build_tree(struct erofs_inode *dir) fail: d->inode = NULL; d->type = EROFS_FT_UNKNOWN; - goto err_closedir; + goto err; } d->type = erofs_type_by_mode[d->inode->i_mode >> S_SHIFT]; @@ -1003,6 +1003,7 @@ fail: err_closedir: closedir(_dir); +err: return ERR_PTR(ret); } |