GraphicsMagick: coders/bmp.c Only 16bpp and 32bpp is supported f...
GraphicsMagick Commits <[email protected]> Wed, 20 Sep 2023 17:05:40 -0500
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.2360.1695247948.1961.graphicsmagick-commit@lists.sourceforge.net> |
changeset de05af6c7e68 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=de05af6c7e68 summary: coders/bmp.c Only 16bpp and 32bpp is supported for BI_BITFIELDS compression type. 8bpp is not implemented. diffstat: ChangeLog | 6 +++++- coders/bmp.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diffs (47 lines): diff -r 72785f88a361 -r de05af6c7e68 ChangeLog --- a/ChangeLog Wed Sep 20 23:06:01 2023 +0200 +++ b/ChangeLog Thu Sep 21 00:05:16 2023 +0200 @@ -1,4 +1,8 @@ -2023-09-16 Fojtik Jaroslav <[email protected]> +2023-09-21 Fojtik Jaroslav <[email protected]> + * coders/bmp.c Only 16bpp and 32bpp is supported for BI_BITFIELDS + compression type. 8bpp is not implemented. + +2023-09-20 Fojtik Jaroslav <[email protected]> * coders/bmp.c Remove duplicity, same information has been logged twice. 22:54:49 0:0.002746 0.000u 9688 bmp.c/ReadBMPImage/750/Coder: File size: Claimed=8, Actual=1129 diff -r 72785f88a361 -r de05af6c7e68 coders/bmp.c --- a/coders/bmp.c Wed Sep 20 23:06:01 2023 +0200 +++ b/coders/bmp.c Thu Sep 21 00:05:16 2023 +0200 @@ -1125,22 +1125,27 @@ case BI_BITFIELDS: if(bmp_info.size==40) { - /* TODO: check for gap size >=12*/ + if(bmp_info.ba_offset>0 && bmp_info.ba_offset<52) + ThrowBMPReaderException(CorruptImageError,CorruptImage,image); /* check for gap size >=12*/ bmp_info.red_mask=ReadBlobLSBLong(image); bmp_info.green_mask=ReadBlobLSBLong(image); bmp_info.blue_mask=ReadBlobLSBLong(image); } - break; + goto CheckBitSize; case BI_ALPHABITFIELDS: if(bmp_info.size==40) { - /* TODO: check for gap size >=12*/ + if(bmp_info.ba_offset>0 && bmp_info.ba_offset<56) + ThrowBMPReaderException(CorruptImageError,CorruptImage,image); /* check for gap size >=16*/ bmp_info.red_mask=ReadBlobLSBLong(image); bmp_info.green_mask=ReadBlobLSBLong(image); bmp_info.blue_mask=ReadBlobLSBLong(image); /* TODO: check for gap size >=16*/ bmp_info.alpha_mask=ReadBlobLSBLong(image); } +CheckBitSize: + if(!(bmp_info.bits_per_pixel==16 || bmp_info.bits_per_pixel==32)) + ThrowBMPReaderException(CorruptImageError,CorruptImage,image); break; case BI_RGB: