flash: fix error handling
memory leaks and missing check on memory allocation. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
This commit is contained in:
parent
19167a7af6
commit
45e5d1d90a
|
@ -601,7 +601,9 @@ int flash_write_unlock(struct target *target, struct image *image,
|
||||||
/* find the corresponding flash bank */
|
/* find the corresponding flash bank */
|
||||||
retval = get_flash_bank_by_addr(target, run_address, false, &c);
|
retval = get_flash_bank_by_addr(target, run_address, false, &c);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
{
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
if (c == NULL)
|
if (c == NULL)
|
||||||
{
|
{
|
||||||
section++; /* and skip it */
|
section++; /* and skip it */
|
||||||
|
@ -653,7 +655,8 @@ int flash_write_unlock(struct target *target, struct image *image,
|
||||||
if (run_address + run_size - 1 > c->base + c->size - 1)
|
if (run_address + run_size - 1 > c->base + c->size - 1)
|
||||||
{
|
{
|
||||||
LOG_ERROR("The image is too big for the flash");
|
LOG_ERROR("The image is too big for the flash");
|
||||||
return ERROR_FAIL;
|
retval = ERROR_FAIL;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we're applying any sector automagic, then pad this
|
/* If we're applying any sector automagic, then pad this
|
||||||
|
@ -679,6 +682,12 @@ int flash_write_unlock(struct target *target, struct image *image,
|
||||||
|
|
||||||
/* allocate buffer */
|
/* allocate buffer */
|
||||||
buffer = malloc(run_size);
|
buffer = malloc(run_size);
|
||||||
|
if (buffer == NULL)
|
||||||
|
{
|
||||||
|
LOG_ERROR("Out of memory for flash bank buffer");
|
||||||
|
retval = ERROR_FAIL;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
buffer_size = 0;
|
buffer_size = 0;
|
||||||
|
|
||||||
/* read sections to the buffer */
|
/* read sections to the buffer */
|
||||||
|
|
Loading…
Reference in New Issue