From a9455cf03d14158272868b19bdd0f3e5eb51975b Mon Sep 17 00:00:00 2001 From: David Heuschmann Date: Wed, 10 Oct 2018 16:55:54 +0200 Subject: [PATCH] image/bmp: support v4 and v5 info header versions Decode BITMAPV4INFOHEADER and BITMAPV5INFOHEADER in addition to BITMAPINFOHEADER and check if any of their features are used. If this is not the case, the bmp can be decoded as if it had the BITMAPINFOHEADER. Otherwise an ErrUnsupported is returned. The colormap.bmp and yellow_rose-small-v5.bmp files were generated using imagemagick using the following conversions: convert video-001.bmp -depth 8 -palette colormap.bmp convert yellow_rose-small.bmp -format BMP5 yellow_rose-small-v5.bmp The corresponding png files were created using imagemagick convert without any arguments. Fixes golang/go#27767 Change-Id: I5c0138b231c68132d39a29c71b61faa546921511 Reviewed-on: https://go-review.googlesource.com/c/141799 Reviewed-by: Nigel Tao Run-TryBot: Nigel Tao TryBot-Result: Gobot Gobot --- bmp/reader.go | 27 ++++++++++++++++++++------- bmp/reader_test.go | 2 ++ testdata/colormap.bmp | Bin 0 -> 16818 bytes testdata/colormap.png | Bin 0 -> 27690 bytes testdata/yellow_rose-small-v5.bmp | Bin 0 -> 906 bytes testdata/yellow_rose-small-v5.png | Bin 0 -> 939 bytes 6 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 testdata/colormap.bmp create mode 100644 testdata/colormap.png create mode 100644 testdata/yellow_rose-small-v5.bmp create mode 100644 testdata/yellow_rose-small-v5.png diff --git a/bmp/reader.go b/bmp/reader.go index a0f2715..32bbda9 100644 --- a/bmp/reader.go +++ b/bmp/reader.go @@ -137,20 +137,26 @@ func decodeConfig(r io.Reader) (config image.Config, bitsPerPixel int, topDown b // We only support those BMP images that are a BITMAPFILEHEADER // immediately followed by a BITMAPINFOHEADER. const ( - fileHeaderLen = 14 - infoHeaderLen = 40 + fileHeaderLen = 14 + infoHeaderLen = 40 + v4InfoHeaderLen = 108 + v5InfoHeaderLen = 124 ) var b [1024]byte - if _, err := io.ReadFull(r, b[:fileHeaderLen+infoHeaderLen]); err != nil { + if _, err := io.ReadFull(r, b[:fileHeaderLen+4]); err != nil { return image.Config{}, 0, false, err } if string(b[:2]) != "BM" { return image.Config{}, 0, false, errors.New("bmp: invalid format") } offset := readUint32(b[10:14]) - if readUint32(b[14:18]) != infoHeaderLen { + infoLen := readUint32(b[14:18]) + if infoLen != infoHeaderLen && infoLen != v4InfoHeaderLen && infoLen != v5InfoHeaderLen { return image.Config{}, 0, false, ErrUnsupported } + if _, err := io.ReadFull(r, b[fileHeaderLen+4:fileHeaderLen+infoLen]); err != nil { + return image.Config{}, 0, false, err + } width := int(int32(readUint32(b[18:22]))) height := int(int32(readUint32(b[22:26]))) if height < 0 { @@ -161,12 +167,19 @@ func decodeConfig(r io.Reader) (config image.Config, bitsPerPixel int, topDown b } // We only support 1 plane, 8 or 24 bits per pixel and no compression. planes, bpp, compression := readUint16(b[26:28]), readUint16(b[28:30]), readUint32(b[30:34]) + // if compression is set to BITFIELDS, but the bitmask is set to the default bitmask + // that would be used if compression was set to 0, we can continue as if compression was 0 + if compression == 3 && infoLen > infoHeaderLen && + readUint32(b[54:58]) == 0xff0000 && readUint32(b[58:62]) == 0xff00 && + readUint32(b[62:66]) == 0xff && readUint32(b[66:70]) == 0xff000000 { + compression = 0 + } if planes != 1 || compression != 0 { return image.Config{}, 0, false, ErrUnsupported } switch bpp { case 8: - if offset != fileHeaderLen+infoHeaderLen+256*4 { + if offset != fileHeaderLen+infoLen+256*4 { return image.Config{}, 0, false, ErrUnsupported } _, err = io.ReadFull(r, b[:256*4]) @@ -181,12 +194,12 @@ func decodeConfig(r io.Reader) (config image.Config, bitsPerPixel int, topDown b } return image.Config{ColorModel: pcm, Width: width, Height: height}, 8, topDown, nil case 24: - if offset != fileHeaderLen+infoHeaderLen { + if offset != fileHeaderLen+infoLen { return image.Config{}, 0, false, ErrUnsupported } return image.Config{ColorModel: color.RGBAModel, Width: width, Height: height}, 24, topDown, nil case 32: - if offset != fileHeaderLen+infoHeaderLen { + if offset != fileHeaderLen+infoLen { return image.Config{}, 0, false, ErrUnsupported } return image.Config{ColorModel: color.RGBAModel, Width: width, Height: height}, 32, topDown, nil diff --git a/bmp/reader_test.go b/bmp/reader_test.go index 91b4391..e54aafd 100644 --- a/bmp/reader_test.go +++ b/bmp/reader_test.go @@ -38,8 +38,10 @@ func compare(img0, img1 image.Image) error { // same pixel data. func TestDecode(t *testing.T) { testCases := []string{ + "colormap", "video-001", "yellow_rose-small", + "yellow_rose-small-v5", } for _, tc := range testCases { diff --git a/testdata/colormap.bmp b/testdata/colormap.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d5d394c29d513aef9a0e7b8623df7463c73978d7 GIT binary patch literal 16818 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 z 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 V#?aop0!28zd4eBEz}KUY0RUxiC&&N* literal 0 HcmV?d00001 diff --git a/testdata/yellow_rose-small-v5.png b/testdata/yellow_rose-small-v5.png new file mode 100644 index 0000000000000000000000000000000000000000..8dad37086772832aa9ea4e806d2688adaaa7190d GIT binary patch literal 939 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQVPi)LB0$ORcZ_j4J`}|zkosw zFBlj~4Hy_+B``2p&0t^|NsBrUK7#4 z$1o?=ZgsiisxXCyIOT0^#@8lh{9hP3p*j6pi^YSU@V6b|@2jVN?wfXhQh!fId|Hrm zii6$175|S{`CaUBzu94Mq2KxblxY)tn_3csgYy%jE7E+8=H~2#Og&R2o>OJ2cjg&CJCc8}RPIQD+4gdswaLV2IrZL#;g0?CTfVxEb?5@9lEf^|6RwF zuXQ~ivnt+~);%ame^r_Ou0HuiOWcVvo{ObQcd8W6=CbY%VK|w@a59hge1q)vbdGa1 z>W`;K-)&Udm&&*!nQeVM|JpRk-BtP<6WF$C!b?UJmah&re0UZsXh#w z3uUJmGOUYcTjI&Izg%=dB4b}LW0e=<;zH&vdBXjc91AmfI>Q)i!x&rQnOEnsY)w>M z-($Fl-D=j{y&3mZWx;xn=ISi0}CEZxUk^^hiz@ygh(E?iGddl zHx_>6>}*T0YYq%5^2&;;a!Z@Gku&0eiM6`9{{96UPOP~xr;%ABAu%#3G%74EFf%rk z_hNEzaCG?n3pcLhWV44IJb57D{eu@*9^H9$=m2ZjL0+YpySMJxRygP|=)Y5r+nN$A z3iN?$iEBhjN@7W>RdP`(kYX@0FtpG$G|)A)3^6pYGB&X?wA3~*vNAAW+N*mXMMG|W ZN@iLmZVkl`rh>wV!PC{xWt~$(698H=V*&sG literal 0 HcmV?d00001