summaryrefslogtreecommitdiff
path: root/cmds-check.c
diff options
context:
space:
mode:
authorQu Wenruo <quwenruo@cn.fujitsu.com>2016-10-24 10:43:33 +0800
committerDavid Sterba <dsterba@suse.com>2016-12-14 15:06:34 +0100
commit45f782abf3694d4cf2b61adeccf0c8c8974fc23f (patch)
tree65303a45c91fd27baa65b64cf7b81ff52752177a /cmds-check.c
parent8b125cdd7eba55fc4b6ed3c32ac47ad870f2b092 (diff)
btrfs-progs: fsck: Fix patch allocation check and leak in check_fs_first_inode
Allocated 'path' in check_fs_first_inode() is not checked and for btrfs_search_slot() error, it will leak 'path'. Fix it. Resolves-Coverity-CID: 1374098 Resolves-Coverity-CID: 1374099 Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'cmds-check.c')
-rw-r--r--cmds-check.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/cmds-check.c b/cmds-check.c
index 22d3a66d..d1ca6798 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -4940,13 +4940,15 @@ static int check_fs_first_inode(struct btrfs_root *root, unsigned int ext_ref)
int ret;
path = btrfs_alloc_path();
+ if (!path)
+ return -ENOMEM;
key.objectid = 256;
key.type = BTRFS_INODE_ITEM_KEY;
key.offset = 0;
ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
if (ret < 0)
- return ret;
+ goto out;
if (ret > 0) {
ret = 0;
err |= INODE_ITEM_MISSING;
@@ -4956,6 +4958,7 @@ static int check_fs_first_inode(struct btrfs_root *root, unsigned int ext_ref)
err &= ~LAST_ITEM;
if (err && !ret)
ret = -EIO;
+out:
btrfs_free_path(path);
return ret;
}