[File] [PATCH] Fix broken BMP detection since 5.38

Christos Zoulas christos at zoulas.com
Sat Feb 29 00:45:50 UTC 2020


Hi Huki,

Can you supply a bmp file that is broken? Jörg Jenderek made the latest changes and I want to make sure that we understand what's going on before making more changes.

Best,

christos

> On Feb 27, 2020, at 10:08 PM, Huki <gk7huki at gmail.com> wrote:
> 
> Hi,
> 
> Any news regarding the fix for broken bitmaps? I noticed my email was filtered because of too big attachments. If it helps, I'm reposting my patch in plain text.
> 
> 
> 
> diff --git a/magic/Magdir/images b/magic/Magdir/images
> index 931df682..3cde072c 100644
> --- a/magic/Magdir/images
> +++ b/magic/Magdir/images
> @@ -613,7 +613,7 @@
>  0	leshort		40
>  # skip bad samples like GAME by looking for valid number of color planes
>  >12	uleshort	1		Device independent bitmap graphic
> -!:mime	image/bmp
> +!:mime	image/x-ms-bmp
>  !:apple	????BMPp
>  !:ext	dib
>  >>4	lelong		x		\b, %d x
> @@ -639,7 +639,7 @@
>  >>18	leshort		x		\b, %d x
>  >>20	leshort		x		%d
>  >14	leshort		64		PC bitmap, OS/2 2.x format
> -!:mime	image/bmp
> +!:mime	image/x-ms-bmp
>  !:apple	????BMPp
>  !:ext	bmp
>  # image width and height fields are unsigned integers for OS/2
> @@ -660,7 +660,7 @@
>  #>>(10.l) ubequad		!0	\b, bits 0x%16.16llx
>  # BITMAPV2INFOHEADER	adds RGB bit masks
>  >14	leshort		52		PC bitmap, Adobe Photoshop
> -!:mime	image/bmp
> +!:mime	image/x-ms-bmp
>  !:apple	????BMPp
>  !:ext	bmp
>  >>18	lelong		x		\b, %d x
> @@ -668,54 +668,52 @@
>  >>28	leshort		x		%d
>  # BITMAPV3INFOHEADER	adds alpha channel bit mask
>  >14	leshort		56		PC bitmap, Adobe Photoshop with alpha channel mask
> -!:mime	image/bmp
> +!:mime	image/x-ms-bmp
>  !:apple	????BMPp
>  !:ext	bmp
>  >>18	lelong		x		\b, %d x
>  >>22	lelong		x		%d x
>  >>28	leshort		x		%d
> ->14	leshort		40
> -# jump 4 bytes before end of file/header to skip fmt-116-signature-id-118.dib
> ->>(2.l-4)	ulong	x		PC bitmap, Windows 3.x format
> -!:mime	image/bmp
> +>14	leshort		40		PC bitmap, Windows 3.x format
> +!:mime	image/x-ms-bmp
>  !:apple	????BMPp
> ->>>18	lelong		x		\b, %d x
> ->>>22	lelong		x		%d
> +>>18	lelong		x		\b, %d x
> +>>22	lelong		x		%d
>  # 320 x 400		https://en.wikipedia.org/wiki/LOGO.SYS <https://en.wikipedia.org/wiki/LOGO.SYS>
> ->>>18	ulequad		=0x0000019000000140	x
> +>>18	ulequad		=0x0000019000000140	x
>  !:ext	bmp/sys
> ->>>18	ulequad		!0x0000019000000140
> +>>18	ulequad		!0x0000019000000140
>  # compression method 2~RLE 4-bit/pixel implies also extension rle
> ->>>>30	ulelong		2		x
> +>>>30	ulelong		2		x
>  !:ext	bmp/rle
> ->>>>30	default		x		x
> +>>>30	default		x		x
>  !:ext	bmp
>  # number of bits per pixel (color depth); found 1 2 4 8 16 24 32
> ->>>28	leshort		x		%d
> +>>28	leshort		x		%d
>  # x, y coordinates of the hotspot; there is no hotspot in bitmaps, so values 0
> -#>>>6	uleshort	>0		\b, hotspot %ux
> -#>>>>8	uleshort	x		\b%u
> +#>>6	uleshort	>0		\b, hotspot %ux
> +#>>>8	uleshort	x		\b%u
>  # number of color planes (must be 1), except badplanes.bmp for testing
> -#>>>26	uleshort	>1		\b, %u color planes
> +#>>26	uleshort	>1		\b, %u color planes
>  # compression method: 0~no 1~RLE 8-bit/pixel 2~RLE 4-bit/pixel 3~Huffman 1D 6~RGBA bit field masks
> -#>>>30	ulelong		3		\b, Huffman 1D compression
> ->>>30	ulelong		>0		\b, %u compression
> +#>>30	ulelong		3		\b, Huffman 1D compression
> +>>30	ulelong		>0		\b, %u compression
>  # image size is the size of raw bitmap; a dummy 0 can be given for BI_RGB bitmaps
> ->>>34	ulelong		>0		\b, image size %u
> +>>34	ulelong		>0		\b, image size %u
>  # horizontal and vertical resolution of the image (pixel per metre, signed integer)
> ->>>38	lelong		>0		\b, resolution %d x
> ->>>>42	lelong		x		%d px/m
> +>>38	lelong		>0		\b, resolution %d x
> +>>>42	lelong		x		%d px/m
>  # number of colors in palette 16 256, or 0 to default to 2**n
> -#>>>46	ulelong		>0		\b, %u colors
> +#>>46	ulelong		>0		\b, %u colors
>  # number of important colors used, or 0 when every color is important
> ->>>50	ulelong		>0		\b, %u important colors
> +>>50	ulelong		>0		\b, %u important colors
>  # cbSize; often size of file
> ->>>2	ulelong		x		\b, cbSize %u
> -#>>>2	ulelong		x		\b, cbSize 0x%x
> +>>2	ulelong		x		\b, cbSize %u
> +#>>2	ulelong		x		\b, cbSize 0x%x
>  # offBits; offset to bitmap data like 36h 76h BEh 236h 406h 436h 4E6h
> ->>>10	ulelong			x	\b, bits offset %u
> -#>>>10	ulelong			x	\b, bits offset 0x%x
> -#>>>(10.l) ubequad		!0	\b, bits 0x%16.16llxd
> +>>10	ulelong			x	\b, bits offset %u
> +#>>10	ulelong			x	\b, bits offset 0x%x
> +#>>(10.l) ubequad		!0	\b, bits 0x%16.16llxd
>  >14	leshort		124		PC bitmap, Windows 98/2000 and newer format
>  !:mime	image/x-ms-bmp
>  >>18	lelong		x		\b, %d x
> 
> 
> From: Huki <gk7huki at gmail.com> <mailto:gk7huki at gmail.com>
> Sent: Sun, 2 Feb 2020 04:22:49 +0530
> To: file <file at astron.com> <mailto:file at astron.com>
> Subject: [File] [PATCH] Fix broken BMP detection since 5.38
> 
> 
>  Since updating to File 5.38, bitmap images with header size 40 (Windows
> 3.x format) aren't detected under certain conditions. It seems to happen
> when the file size is > 1MB (eg, a 1024 x 1024 RGB image).
> 
> $ file test.bmp
> test.bmp: data
> 
> I traced down the issue to this recently added line:
> 
> # jump 4 bytes before end of file/header to skip
> fmt-116-signature-id-118.dib
>  >>(2.l-4)    ulong    x        PC bitmap, Windows 3.x format
> 
> It's a bit weird and I don't see any reason to do this. I removed this
> (and adjusted the lines below) and the detection is working again.
> 
> $ file -m magic.mgc test.bmp
> test.bmp: PC bitmap, Windows 3.x format, 1024 x 1024 x 24, image size
> 3145728, resolution 11811 x 11811 px/m, cbSize 3145782, bits offset 54
> 
> Also, I changed the mimetype to consistently use image/x-ms-bmp as
> opposed to image/bmp in some places.
> I've attached the patch and the test bitmap file.
> 
> Regards,
> Huki
> 
> 
> 
> --
> File mailing list
> File at astron.com
> https://mailman.astron.com/mailman/listinfo/file
> <sanitizer.log>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.astron.com/pipermail/file/attachments/20200228/aea88763/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 235 bytes
Desc: Message signed with OpenPGP
URL: <https://mailman.astron.com/pipermail/file/attachments/20200228/aea88763/attachment.asc>


More information about the File mailing list