[Skiboot] [PATCH v2 02/10] external/gard: Fix memory leak

Alistair Popple alistair at popple.id.au
Thu Nov 12 11:43:12 AEDT 2015


Reviewed-by: Alistair Popple <alistair at popple.id.au>

On Wed, 11 Nov 2015 15:39:56 Cyril Bur wrote:
> Signed-off-by: Cyril Bur <cyril.bur at au1.ibm.com>
> ---
>  external/gard/gard.c | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/external/gard/gard.c b/external/gard/gard.c
> index 4e891f3..b656f40 100644
> --- a/external/gard/gard.c
> +++ b/external/gard/gard.c
> @@ -710,7 +710,8 @@ int main(int argc, char **argv)
>  			break;
>  		case '?':
>  			usage(progname);
> -			return EXIT_FAILURE;
> +			rc = EXIT_FAILURE;
> +			goto out_free;
>  		}
>  	}
>  
> @@ -726,7 +727,8 @@ int main(int argc, char **argv)
>  	/* do we have a command? */
>  	if (optind == argc) {
>  		usage(progname);
> -		return EXIT_FAILURE;
> +		rc = EXIT_FAILURE;
> +		goto out_free;
>  	}
>  
>  	argc -= optind;
> @@ -735,8 +737,10 @@ int main(int argc, char **argv)
>  
>  	if (!filename) {
>  		rc = get_dev_mtd(fdt_flash_path, &filename);
> -		if (rc)
> -			return EXIT_FAILURE;
> +		if (rc) {
> +			rc = EXIT_FAILURE;
> +			goto out_free;
> +		}
>  	}
>  
>  	rc = file_init_path(filename, NULL, &(ctx->bl));
> @@ -786,7 +790,6 @@ int main(int argc, char **argv)
>  	}
>  
>  out:
> -	free(filename);
>  	if (ctx->ffs)
>  		ffs_close(ctx->ffs);
>  
> @@ -795,7 +798,8 @@ out:
>  	if (i == ARRAY_SIZE(actions)) {
>  		fprintf(stderr, "%s: '%s' isn't a valid command\n", progname, action);
>  		usage(progname);
> -		return EXIT_FAILURE;
> +		rc = EXIT_FAILURE;
> +		goto out_free;
>  	}
>  
>  	if (rc > 0) {
> @@ -803,5 +807,8 @@ out:
>  		if (filename && rc == FFS_ERR_BAD_MAGIC)
>  			fprintf(stderr, "Maybe you didn't give a full flash image file?\nDid you mean '--part'?\n");
>  	}
> +
> +out_free:
> +	free(filename);
>  	return rc;
>  }
> 



More information about the Skiboot mailing list