Fix NULL pointer dereferences in xpm_load_image
authorPo Lu <luangruo@yahoo.com>
Wed, 24 Jul 2024 03:57:28 +0000 (11:57 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 24 Jul 2024 03:57:28 +0000 (11:57 +0800)
* src/image.c (x_destroy_x_image): Correct test condition.
(xpm_load_image): Do not release image data if it is still to be
created.

src/image.c

index 5aabb517f30b73e5bca71d71e05f0c1206b02264..f869a95c15dfb2a159100996397ba03792252d4a 100644 (file)
@@ -3886,7 +3886,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
 static void
 x_destroy_x_image (XImage *ximg)
 {
-  if (ximg)
+  if (ximg->data)
     {
       xfree (ximg->data);
       ximg->data = NULL;
@@ -6505,9 +6505,12 @@ xpm_load_image (struct frame *f,
 
  failure:
   image_error ("Invalid XPM3 file (%s)", img->spec);
-  image_destroy_x_image (ximg);
-  image_destroy_x_image (mask_img);
-  image_clear_image (f, img);
+  if (ximg)
+    {
+      image_destroy_x_image (ximg);
+      image_destroy_x_image (mask_img);
+      image_clear_image (f, img);
+    }
   return 0;
 
 #undef match