From 3cf0223947016aae29c5aa1efec6417cb6ad7dfe Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sun, 12 Nov 2023 15:14:09 -0800 Subject: [PATCH] "Foam" magic: avoid crash if can't load image data --- docs/CHANGES.txt | 3 +++ magic/src/foam.c | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 4c27c8998..269d64da0 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -38,6 +38,9 @@ https://tuxpaint.org/ AppData. TOYAMA Shin-ichi + * "Foam" magic tool -- avoid crash if image data cannot be loaded. + Bill Kendrick + * Localization Updates: --------------------- * Bulgarian diff --git a/magic/src/foam.c b/magic/src/foam.c index a9eb3f95b..f9e21bb6d 100644 --- a/magic/src/foam.c +++ b/magic/src/foam.c @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: April 20, 2023 + Last updated: November 12, 2023 */ #include @@ -87,6 +87,11 @@ int foam_init(magic_api * api, Uint32 disabled_features ATTRIBUTE_UNUSED) snprintf(fname, sizeof(fname), "%simages/magic/foam_data.png", api->data_directory); foam_data = IMG_Load(fname); + if (foam_data == NULL) + { + fprintf(stderr, "Cannot load %s\n", fname); + return (0); + } foam_7 = api->scale(foam_data, ((api->canvas_w / FOAM_PROP) * 4) / 4, ((api->canvas_h / FOAM_PROP) * 4) / 4, 1); foam_5 = api->scale(foam_data, ((api->canvas_w / FOAM_PROP) * 3) / 4, ((api->canvas_h / FOAM_PROP) * 3) / 4, 1); @@ -95,6 +100,12 @@ int foam_init(magic_api * api, Uint32 disabled_features ATTRIBUTE_UNUSED) SDL_FreeSurface(foam_data); + if (foam_7 == NULL || foam_5 == NULL || foam_3 == NULL || foam_1 == NULL) + { + fprintf(stderr, "Cannot scale %s\n", fname); + return(0); + } + return (1); }