summaryrefslogtreecommitdiff
path: root/source/fitz/load-bmp.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2016-03-28 13:42:26 +0200
committerRobin Watts <robin.watts@artifex.com>2016-03-29 13:06:27 +0100
commit60f842b8573dd4a4bbc817acaa336b63b98ee3c8 (patch)
tree110085b32e8719158075fa4beb78b172f7212556 /source/fitz/load-bmp.c
parentf4d9ffc3899454cdac606434da17539d3ad2bca1 (diff)
downloadmupdf-60f842b8573dd4a4bbc817acaa336b63b98ee3c8.tar.xz
bmp: Only allow in range bitcounts for uncompressed images.
Diffstat (limited to 'source/fitz/load-bmp.c')
-rw-r--r--source/fitz/load-bmp.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/source/fitz/load-bmp.c b/source/fitz/load-bmp.c
index 0c9022ec..5582d276 100644
--- a/source/fitz/load-bmp.c
+++ b/source/fitz/load-bmp.c
@@ -679,15 +679,14 @@ bmp_read_image(fz_context *ctx, struct info *info, unsigned char *p, int total,
if (info->width <= 0 || info->width > SHRT_MAX || info->height <= 0 || info->height > SHRT_MAX)
fz_throw(ctx, FZ_ERROR_GENERIC, "dimensions (%d x %d) out of range in bmp image",
info->width, info->height);
- if (info->bitcount != 1 && info->bitcount != 2 &&
- info->bitcount != 4 && info->bitcount != 8 &&
- info->bitcount != 16 && info->bitcount != 24 &&
- info->bitcount != 32)
- fz_throw(ctx, FZ_ERROR_GENERIC, "unsupported bits per pixel (%d) in bmp image", info->bitcount);
if (info->compression != BI_RGB && info->compression != BI_RLE8 &&
info->compression != BI_RLE4 && info->compression != BI_BITFIELDS)
fz_throw(ctx, FZ_ERROR_GENERIC, "unsupported compression method (%d) in bmp image", info->compression);
- if ((info->compression == BI_RLE8 && info->bitcount != 8) ||
+ if ((info->compression == BI_RGB && info->bitcount != 1 &&
+ info->bitcount != 2 && info->bitcount != 4 &&
+ info->bitcount != 8 && info->bitcount != 16 &&
+ info->bitcount != 24 && info->bitcount != 32) ||
+ (info->compression == BI_RLE8 && info->bitcount != 8) ||
(info->compression == BI_RLE4 && info->bitcount != 4) ||
(info->compression == BI_BITFIELDS && info->bitcount != 16 && info->bitcount != 32))
fz_throw(ctx, FZ_ERROR_GENERIC, "invalid bits per pixel (%d) for compression (%d) in bmp image",