Fix NULL pointer dereferences in xpm_load_image

* 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.
This commit is contained in:
Po Lu 2024-07-24 11:57:28 +08:00
parent 1ee8579eb7
commit b5543c54bf

View 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