From 627f1cb3542408533158dc5682b468ef48614eb8 Mon Sep 17 00:00:00 2001 From: Marc Schink Date: Fri, 2 Oct 2015 17:12:17 +0200 Subject: [PATCH] helper/fileio: Fix memory leak. The memory leak occurs when opening a file fails. It can be reproduced by using the "flash verify_bank" command with a filename that does not exist. Change-Id: I60b7b545c18793d750ff75d08124fde3f0aa6f64 Signed-off-by: Marc Schink Reviewed-on: http://openocd.zylin.com/2998 Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/helper/fileio.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/helper/fileio.c b/src/helper/fileio.c index 9d3931356e..2664bfa116 100644 --- a/src/helper/fileio.c +++ b/src/helper/fileio.c @@ -109,10 +109,10 @@ int fileio_open(struct fileio *fileio_p, enum fileio_access access_type, enum fileio_type type) { - int retval = ERROR_OK; + int retval; + struct fileio_internal *fileio; - struct fileio_internal *fileio = malloc(sizeof(struct fileio_internal)); - fileio_p->fp = fileio; + fileio = malloc(sizeof(struct fileio_internal)); fileio->type = type; fileio->access = access_type; @@ -120,7 +120,15 @@ int fileio_open(struct fileio *fileio_p, retval = fileio_open_local(fileio); - return retval; + if (retval != ERROR_OK) { + free(fileio->url); + free(fileio); + return retval; + } + + fileio_p->fp = fileio; + + return ERROR_OK; } static inline int fileio_close_local(struct fileio_internal *fileio) -- 2.30.2