From 980bdef0fde36772e283e36a7e12ce28ff1901aa Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 3 Oct 2019 17:25:19 +0200 Subject: [PATCH] Fix memleaks in error case We should free img.data. --- src/pngd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pngd.c b/src/pngd.c index ef46621..fb3fd25 100644 --- a/src/pngd.c +++ b/src/pngd.c @@ -250,6 +250,7 @@ int pngReadToDrawable(char *pngpath, Drawable d, uint8_t bg_red, fclose(infile); if (!img.data || img.width == 0 || img.height == 0) { fprintf(stderr, "error loading png data\n"); + pngFree(&img); return 0; } if (debug > 0) @@ -259,6 +260,7 @@ int pngReadToDrawable(char *pngpath, Drawable d, uint8_t bg_red, pad = 32; if (!xdata) { fprintf(stderr, "xdata malloc error\n"); + pngFree(&img); return 0; } ximage = @@ -267,6 +269,7 @@ int pngReadToDrawable(char *pngpath, Drawable d, uint8_t bg_red, if (!ximage) { fprintf(stderr, "error creating ximage\n"); free(xdata); + pngFree(&img); return 0; } ximage->byte_order = MSBFirst; -- 2.24.0