If zalloc fails, one needs to free memory previously
allocated in the function. This commit makes sure that
we do not leak any memory.
Signed-off-by: Francois Berder <fberder@outlook.fr>
Fixes: ed34f34dbaf2 ("ext4fs write support")
Acked-by: Quentin Schulz <quentin.schulz@cherry.de>
/* add each path entry after root */
while (token != NULL) {
arr[i] = zalloc(strlen(token) + 1);
- if (!arr[i])
+ if (!arr[i]) {
+ while (i--)
+ free(arr[i]);
+
return -ENOMEM;
+ }
memcpy(arr[i++], token, strlen(token));
token = strtok(NULL, "/");
}
}
node->content = zalloc(fs->blksz);
- if (node->content == NULL)
+ if (!node->content) {
+ free(node);
return;
+ }
memcpy(node->content, buffer, fs->blksz);
if (first_node == true) {
di_buffer = zalloc(fs->blksz);
if (!di_buffer) {
printf("No memory\n");
- return;
+ goto fail;
}
dib_start_addr = di_buffer;
blknr = le32_to_cpu(inode->b.blocks.double_indir_block);
tigp_buffer = zalloc(fs->blksz);
if (!tigp_buffer) {
printf("No memory\n");
- return;
+ goto fail;
}
tib_start_addr = tigp_buffer;
blknr = le32_to_cpu(inode->b.blocks.triple_indir_block);