mem_ap: fix a potential memory leak in mem_ap_target_create()
If the function mem_ap_target_create() exits for an error, the value of pointer mem_ap get lost, causing a memory leak. Move the allocation of mem_ap after the check on the parameters. While there, add a check on the value returned by calloc(). Issue highlighted by clang 7.0.0. Change-Id: Ia2c11b14fde9694f28bf6efe01d278923db0f0d4 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/4923 Reviewed-by: Tomas Vanek <vanekt@fbl.cz> Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
This commit is contained in:
parent
3b39618eb5
commit
1c6f7075f7
|
@ -31,7 +31,7 @@ struct mem_ap {
|
|||
|
||||
static int mem_ap_target_create(struct target *target, Jim_Interp *interp)
|
||||
{
|
||||
struct mem_ap *mem_ap = calloc(1, sizeof(struct mem_ap));
|
||||
struct mem_ap *mem_ap;
|
||||
struct adiv5_private_config *pc;
|
||||
|
||||
pc = (struct adiv5_private_config *)target->private_config;
|
||||
|
@ -43,6 +43,12 @@ static int mem_ap_target_create(struct target *target, Jim_Interp *interp)
|
|||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
mem_ap = calloc(1, sizeof(struct mem_ap));
|
||||
if (mem_ap == NULL) {
|
||||
LOG_ERROR("Out of memory");
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
mem_ap->ap_num = pc->ap_num;
|
||||
mem_ap->arm.common_magic = ARM_COMMON_MAGIC;
|
||||
mem_ap->arm.dap = pc->dap;
|
||||
|
|
Loading…
Reference in New Issue