# HG changeset patch # User Matti Hamalainen # Date 1530221254 -10800 # Node ID a8e475eede4abf1a023c797e5c82466fedc3bfc5 # Parent a137e49e9f0dfd2359efdda569ea22e20c4f4ca6 Fix two memory leaks in the PNG writer/reader of libgfx. diff -r a137e49e9f0d -r a8e475eede4a tools/libgfx.c --- a/tools/libgfx.c Fri Jun 29 00:26:13 2018 +0300 +++ b/tools/libgfx.c Fri Jun 29 00:27:34 2018 +0300 @@ -562,6 +562,7 @@ } png_set_PLTE(png_ptr, info_ptr, palette, img->ncolors); + png_free(png_ptr, palette); } // png_set_gAMA(png_ptr, info_ptr, 2.2); @@ -695,7 +696,9 @@ img->aspect = (float) res_y / (float) res_x; // ... - row_pointers = png_malloc(png_ptr, height * sizeof(png_bytep)); + if ((row_pointers = png_malloc(png_ptr, height * sizeof(png_bytep))) == NULL) + goto error; + for (i = 0; i < img->height; i++) row_pointers[i] = img->data + (i * img->pitch); @@ -759,7 +762,8 @@ } error: -// png_free(png_ptr, palette); + if (png_ptr != NULL && row_pointers != NULL) + png_free(png_ptr, row_pointers); if (png_ptr && info_ptr) png_destroy_read_struct(&png_ptr, &info_ptr, NULL);