fsck.f2fs: fix potential NULL dereference
The input pointer "parent" was used unsafely
before checking against NULL
Found by RASU JSC with Svace static analyzer
Fixes: 603f8f9d3(sload.f2fs: support loading files into partition directly)
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Maxim Korotkov <maskorotkov@rasu.ru>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
diff --git a/fsck/dir.c b/fsck/dir.c
index ef7c1c2..1cec598 100644
--- a/fsck/dir.c
+++ b/fsck/dir.c
@@ -225,19 +225,23 @@
int level = 0, current_depth, bit_pos;
int nbucket, nblock, bidx, block;
int slots = GET_DENTRY_SLOTS(name_len);
- f2fs_hash_t dentry_hash = f2fs_dentry_hash(get_encoding(sbi),
- IS_CASEFOLDED(&parent->i),
- name, name_len);
+ f2fs_hash_t dentry_hash;
struct f2fs_dentry_block *dentry_blk;
struct f2fs_dentry_ptr d;
struct dnode_of_data dn;
- nid_t pino = le32_to_cpu(parent->footer.ino);
- unsigned int dir_level = parent->i.i_dir_level;
+ nid_t pino;
+ unsigned int dir_level;
int ret;
if (parent == NULL)
return -EINVAL;
+ dentry_hash = f2fs_dentry_hash(get_encoding(sbi),
+ IS_CASEFOLDED(&parent->i),
+ name, name_len);
+ pino = le32_to_cpu(parent->footer.ino);
+ dir_level = parent->i.i_dir_level;
+
if (!pino) {
ERR_MSG("Wrong parent ino:%d \n", pino);
return -EINVAL;