]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid crashes when trying to load bad GIF files
authorEli Zaretskii <eliz@gnu.org>
Tue, 8 Sep 2020 16:17:23 +0000 (19:17 +0300)
committerEli Zaretskii <eliz@gnu.org>
Tue, 8 Sep 2020 16:17:23 +0000 (19:17 +0300)
* src/image.c (gif_load): Handle the case when GifErrorString
returns NULL.  (Bug#43281)

src/image.c

index 56878bcb8cb01917f89b931402b9fccd9678ad7e..956fb1325ed8ef00d157f84798a2d04e936c9bf8 100644 (file)
@@ -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. */