This is an automated email from Gerrit.

Antonio Borneo ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/4923

-- gerrit

commit 731ffd0512bc57f0e1cbc4b96f043cfa8571ae10
Author: Antonio Borneo <[email protected]>
Date:   Fri Feb 15 21:26:27 2019 +0100

    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 <[email protected]>

diff --git a/src/target/mem_ap.c b/src/target/mem_ap.c
index 3a2d4b7..584e19d 100644
--- a/src/target/mem_ap.c
+++ b/src/target/mem_ap.c
@@ -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;

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to