[gimp] plug-ins: fix crash in DDS loader when one of the masks is zero.
- From: Jacob Boerema <jboerema src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: fix crash in DDS loader when one of the masks is zero.
- Date: Mon, 2 May 2022 21:31:01 +0000 (UTC)
commit 045c3d3208c135d266a818be807253055f274655
Author: Jacob Boerema <jgboerema gmail com>
Date: Mon May 2 14:55:46 2022 -0400
plug-ins: fix crash in DDS loader when one of the masks is zero.
plug-ins/file-dds/ddsread.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/plug-ins/file-dds/ddsread.c b/plug-ins/file-dds/ddsread.c
index 5f89923f57..a57e57bdda 100644
--- a/plug-ins/file-dds/ddsread.c
+++ b/plug-ins/file-dds/ddsread.c
@@ -1175,7 +1175,7 @@ load_layer (FILE *fp,
if (hdr->pixelfmt.flags & DDPF_ALPHAPIXELS)
pixels[pos + 3] = (pixel >> d->ashift << (8 - d->abits) & d->amask) * 255 / d->amask;
}
- else
+ else if (d->rmask > 0 && d->gmask > 0 && d->bmask > 0)
{
pixels[pos] =
(pixel >> d->rshift << (8 - d->rbits) & d->rmask) * 255 / d->rmask;
@@ -1183,10 +1183,13 @@ load_layer (FILE *fp,
(pixel >> d->gshift << (8 - d->gbits) & d->gmask) * 255 / d->gmask;
pixels[pos + 2] =
(pixel >> d->bshift << (8 - d->bbits) & d->bmask) * 255 / d->bmask;
- if (hdr->pixelfmt.flags & DDPF_ALPHAPIXELS)
+ if (hdr->pixelfmt.flags & DDPF_ALPHAPIXELS && d->bpp == 4)
{
- pixels[pos + 3] =
- (pixel >> d->ashift << (8 - d->abits) & d->amask) * 255 / d->amask;
+ if (d->amask > 0)
+ pixels[pos + 3] =
+ (pixel >> d->ashift << (8 - d->abits) & d->amask) * 255 / d->amask;
+ else
+ pixels[pos + 3] = 255;
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]