btrfs-progs: check allocation result in add_clone_source
Resolves-Coverity-CID: 1054894 Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
parent
34350d11c1
commit
c4ca5c5f3f
25
cmds-send.c
25
cmds-send.c
|
@ -172,11 +172,16 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void add_clone_source(struct btrfs_send *s, u64 root_id)
|
||||
static int add_clone_source(struct btrfs_send *s, u64 root_id)
|
||||
{
|
||||
s->clone_sources = realloc(s->clone_sources,
|
||||
sizeof(*s->clone_sources) * (s->clone_sources_count + 1));
|
||||
|
||||
if (!s->clone_sources)
|
||||
return -ENOMEM;
|
||||
s->clone_sources[s->clone_sources_count++] = root_id;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int write_buf(int fd, const void *buf, int size)
|
||||
|
@ -475,7 +480,11 @@ int cmd_send(int argc, char **argv)
|
|||
goto out;
|
||||
}
|
||||
|
||||
add_clone_source(&send, root_id);
|
||||
ret = add_clone_source(&send, root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: not enough memory\n");
|
||||
goto out;
|
||||
}
|
||||
subvol_uuid_search_finit(&send.sus);
|
||||
free(subvol);
|
||||
subvol = NULL;
|
||||
|
@ -575,7 +584,11 @@ int cmd_send(int argc, char **argv)
|
|||
goto out;
|
||||
}
|
||||
|
||||
add_clone_source(&send, parent_root_id);
|
||||
ret = add_clone_source(&send, parent_root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: not enough memory\n");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = optind; i < argc; i++) {
|
||||
|
@ -671,7 +684,11 @@ int cmd_send(int argc, char **argv)
|
|||
goto out;
|
||||
|
||||
/* done with this subvol, so add it to the clone sources */
|
||||
add_clone_source(&send, root_id);
|
||||
ret = add_clone_source(&send, root_id);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "ERROR: not enough memory\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
parent_root_id = 0;
|
||||
full_send = 0;
|
||||
|
|
Loading…
Reference in New Issue