btrfs-progs: subvol_uuid_search: return error code on memory allocation failure

On failure of memory allocation for a 'struct subvol_info', we would end
up dereferencing a NULL pointer. This commit fixes the issue by returning an
error encoded pointer.

Signed-off-by: Prasanth K S R <prasanth.ksr@dell.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Prasanth K S R 2016-12-10 19:17:44 +05:30 committed by David Sterba
parent a2f7af94ab
commit ee518036d2
1 changed files with 9 additions and 3 deletions

View File

@ -474,6 +474,10 @@ struct subvol_info *subvol_uuid_search(struct subvol_uuid_search *s,
goto out; goto out;
info = calloc(1, sizeof(*info)); info = calloc(1, sizeof(*info));
if (!info) {
ret = -ENOMEM;
goto out;
}
info->root_id = root_id; info->root_id = root_id;
memcpy(info->uuid, root_item.uuid, BTRFS_UUID_SIZE); memcpy(info->uuid, root_item.uuid, BTRFS_UUID_SIZE);
memcpy(info->received_uuid, root_item.received_uuid, BTRFS_UUID_SIZE); memcpy(info->received_uuid, root_item.received_uuid, BTRFS_UUID_SIZE);
@ -495,9 +499,11 @@ struct subvol_info *subvol_uuid_search(struct subvol_uuid_search *s,
} }
out: out:
if (ret && info) { if (ret) {
free(info->path); if (info) {
free(info); free(info->path);
free(info);
}
return ERR_PTR(ret); return ERR_PTR(ret);
} }