summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2020-09-08 19:17:23 +0300
committerEli Zaretskii <eliz@gnu.org>2020-09-08 19:17:23 +0300
commit366a97c980f068a3ed665d337d644ee58cd25ca0 (patch)
tree7ad02f21fd12b8c4a2630a30ee7f6dec714790fb /src
parent793871310599f8c75cf86bed97bdad70577cc5dd (diff)
Avoid crashes when trying to load bad GIF files
* src/image.c (gif_load): Handle the case when GifErrorString returns NULL. (Bug#43281)
Diffstat (limited to 'src')
-rw-r--r--src/image.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/image.c b/src/image.c
index 56878bcb8cb..956fb1325ed 100644
--- a/src/image.c
+++ b/src/image.c
@@ -8160,11 +8160,13 @@ gif_load (struct frame *f, struct image *img)
if (gif == NULL)
{
#if HAVE_GIFERRORSTRING
- image_error ("Cannot open `%s': %s",
- file, build_string (GifErrorString (gif_err)));
-#else
- image_error ("Cannot open `%s'", file);
+ const char *errstr = GifErrorString (gif_err);
+ if (errstr)
+ image_error ("Cannot open `%s': %s", file, build_string (errstr));
+ else
#endif
+ image_error ("Cannot open `%s'", file);
+
return 0;
}
}
@@ -8190,11 +8192,13 @@ gif_load (struct frame *f, struct image *img)
if (!gif)
{
#if HAVE_GIFERRORSTRING
- image_error ("Cannot open memory source `%s': %s",
- img->spec, build_string (GifErrorString (gif_err)));
-#else
- image_error ("Cannot open memory source `%s'", img->spec);
+ const char *errstr = GifErrorString (gif_err);
+ if (errstr)
+ image_error ("Cannot open memory source `%s': %s",
+ img->spec, build_string (errstr));
+ else
#endif
+ image_error ("Cannot open memory source `%s'", img->spec);
return 0;
}
}
@@ -8474,9 +8478,9 @@ gif_load (struct frame *f, struct image *img)
if (error_text)
image_error ("Error closing `%s': %s",
img->spec, build_string (error_text));
-#else
- image_error ("Error closing `%s'", img->spec);
+ else
#endif
+ image_error ("Error closing `%s'", img->spec);
}
/* Maybe fill in the background field while we have ximg handy. */