[U-Boot] [PATCH 1/1] fs: fat: memory leak in fat_unlink()

AKASHI Takahiro
2018-10-02T06:39:54Z

On Tue, Oct 02, 2018 at 06:58:00AM +0200, Heinrich Schuchardt wrote:
> Do not leak filename_copy in case of error.
> Catch out of memory when calling strdup.
>
> This addresses Coverity Scan CID 184086.

Thanks,
-Takahiro Akashi

> Reported-by: Tom Rini <trini@konsulko.com>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> fs/fat/fat_write.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
> index 4286a0a847..b1ed0e6734 100644
> --- a/fs/fat/fat_write.c
> +++ b/fs/fat/fat_write.c
> @@ -1263,6 +1263,11 @@ int fat_unlink(const char *filename)
> char *filename_copy, *dirname, *basename;
>
> filename_copy = strdup(filename);
> + if (!filename_copy) {
> + printf("Error: allocating memory\n");
> + ret = -ENOMEM;
> + goto exit;
> + }
> split_filename(filename_copy, &dirname, &basename);
>
> if (!strcmp(dirname, "/") && !strcmp(basename, "")) {
> @@ -1274,7 +1279,8 @@ int fat_unlink(const char *filename)
> itr = malloc_cache_aligned(sizeof(fat_itr));
> if (!itr) {
> printf("Error: allocating memory\n");
> - return -ENOMEM;
> + ret = -ENOMEM;
> + goto exit;
> }
>
> ret = fat_itr_root(itr, &fsdata);
> --
> 2.19.0
>