diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index 04b91e51ce..d26c418612 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -770,8 +770,8 @@ static int cbfs_add_master_header(void) */ if (param.topswap_size) { if (update_master_header_loc_topswap(&image, h_loc, - header_offset)) - return 1; + header_offset)) + goto done; } ret = maybe_update_metadata_hash(&image); diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c index 8ae9120acc..7154bc9d54 100644 --- a/util/cbfstool/common.c +++ b/util/cbfstool/common.c @@ -34,8 +34,13 @@ int buffer_create(struct buffer *buffer, size_t size, const char *name) if (!buffer->data) { fprintf(stderr, "buffer_create: Insufficient memory (0x%zx).\n", size); + if (buffer->name) { + free(buffer->name); + buffer->name = NULL; + } + return -1; } - return (buffer->data == NULL); + return 0; } int buffer_from_file_aligned_size(struct buffer *buffer, const char *filename,