From af84313c622af880e95d461ea8b7dbca58d2dffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 5 Feb 2013 09:44:26 +0100 Subject: [PATCH] Fixed crash in image reader when reading certain BMP files. If the high bit in a mask is set, for instance if the mask is 0xff000000, and we shift it to the right by 24 positions, since the mask was not declared as unsigned we ended up with a mask value of 0xffffffff. We then add 1 to this value and divide by the result, causing a division by zero crash. The masks need to be declared unsigned to prevent sign bit extension when shifting right. Task-number: QTBUG-29194 Change-Id: I79260344cebfbdd3ea86416a9c734dca76517999 Reviewed-by: Gunnar Sletta --- src/gui/image/qbmphandler.cpp | 8 ++++---- .../gui/image/qimagereader/images/rgb32bf.bmp | Bin 0 -> 32578 bytes .../gui/image/qimagereader/qimagereader.qrc | 1 + .../gui/image/qimagereader/tst_qimagereader.cpp | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 tests/auto/gui/image/qimagereader/images/rgb32bf.bmp diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp index 062714c769..6abde5e420 100644 --- a/src/gui/image/qbmphandler.cpp +++ b/src/gui/image/qbmphandler.cpp @@ -143,7 +143,7 @@ static QDataStream &operator<<(QDataStream &s, const BMP_INFOHDR &bi) return s; } -static int calc_shift(int mask) +static int calc_shift(uint mask) { int result = 0; while (mask && !(mask & 1)) { @@ -207,9 +207,9 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, int offset, int #endif int w = bi.biWidth, h = bi.biHeight, nbits = bi.biBitCount; int t = bi.biSize, comp = bi.biCompression; - int red_mask = 0; - int green_mask = 0; - int blue_mask = 0; + uint red_mask = 0; + uint green_mask = 0; + uint blue_mask = 0; int red_shift = 0; int green_shift = 0; int blue_shift = 0; diff --git a/tests/auto/gui/image/qimagereader/images/rgb32bf.bmp b/tests/auto/gui/image/qimagereader/images/rgb32bf.bmp new file mode 100644 index 0000000000000000000000000000000000000000..20fa9a1326bccf03c925678e561183dd46586ad7 GIT binary patch literal 32578 zcmb{5PfXN@zWDu7r!ZF3Ngft7VKF8w=z;_mENDV9G+{v#ld*{lPhv9O9?m(mr5$Qf zQPB|<6%|KRR8$;MX-g}ea!xt-a(^X+@Zmeo*!K^*z3aU|B=~+H9sD2=dF#VK`mNstDhoae zWC}hBR2Ci&WD3s&qM=KHiO`KebobrB#O}v|*xN4y*|%Q>VtalJWcU0Oh!y=MkSm%A z#P|L+klXvWKz!fNfz^F0fyDmx!0P`0*nS`ovIF68An?vRfxv+Sfxx@(1_D)8fxvt3 z1p@Cov=2TA1U~#Q5cth+0)dY{3Ism+BoH`$JPo zPN_|&bw+2^u5)qtLH0rRLH0rRLH0rRLH0rRLH0rRLH0rRLH0rRLH0rRLH0rRLH0rR zLH0rRLH0rRLH0rRLH0rRLH0rRLH5C@9f-1zvX8QlvX8QlvX8QlvX8QlvX8QlvX8Ql zvX8QlvX8QlvX8QlvX8QlvX8QlvX8QlvX8QlvX8QlvX5@r2Ls7KkbRJSkbRJSkbRJS zkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSkbRJSFdr^B zb}U@*FZxKoRil2V-|G)*(#QHlpQ>4(>2oF2qAzq@U#e9nbW*3(rqep3vuf8loj>N( zhuAyzaEN_~eTaRCeTaRCeTaRCeTaRCeTaRCeTaRCeTaRCeTaRCeTaRCeTaRCeTaRC zeTaRCeTaRCeTcnn2b}wmWjLHXjKEyu6KEyu6KEyu6KEyu6KEyu6 zKEyu6KEyu6KEyu6KEyu6KEyu6KEyu6KEyu6KEyu6KEyu6K9r9X{L8;Y3O>?r)u`X; z_xgjH^szqCr)t(``dkUM=nEa!mul4sozy9{>9o%1tlD)>=au{yr@qL!FJfQBzKDGh z`y%#5?2FhJu`gm@#J-4q5&I(cMeK{%7qKs5U&OwMeG&U2_C@TA*cY)cVqe6*hize*A1p5j06YMA0Pq3e0Kf!*2{RI07_7m(U*iW#ZU_Zfrg8c;h3HB50C)iK0 zpI|@1euDi3`w8|F>?hbyu%BQ*v1MPxzR1^p5&I(cMeK{%7qKs5U&OwMeG&U2_C@TA z*cY)cVqe6*hi`W;jFJfQBzKDGh`y%#5?2FhJu`kLypC45g{8o+noqn%B zs7W8|6Md>?eWuTqP>a6Maeb*)ozO|0QkzcejLxcE=X734UHHhU_x%aeVBcieVBcieVBcieVBcieVBcieVBcieVBcieVBcieVBci zz3tkA9a}$lylvj^IB+1a!@S>N-tRE)cf9|8V263X!@S>N-tYM6qreXHeusI#!@S>d z=~7_FjT?a-=KT)ye#gs~fgR@k4)cD8dB4NF-!U^2*kRu9Fzoa|>gj)24j_XUc>V!_}l-hJ! zXLMHWI;ZnW>Vi6c>&zFkFLvz3?2FkKvoB^}%)Xd?G5ccn#q5jO7qc&BU(CLkeKGrD z_QmXr*%z}fW?#&{n0+z(V)n)Ci`f^mFJ@oNzBtN0%0BAcN7+Z&N7+Z&N7+Z&N7+Z& zN7+Z&N7+Z&N7+Z&N7+Z&N7+Z&N7+Z&N7+Z&N7+Z&N7+Z&N7+Z&N4M;Y*%z}fW?#&{ zn0+z(V)n)Ci`f^mFJ@oNzL`T~}urFa>!oGxk3HuWECG1Ps zm#{BkU&6kGeF^&#_9g5~*q5*`VPBGDpJbn8pJbn8pJbn8pJbn8pJbn8pJbn8pJbn8 zpJbn8pJbn8pJbn8pJbn8pJbn8pJbn8pJbn8pJbn8pWL!9VPC?&gnbG7680tROW2pN zFJWK8zJz@V`x5pg>`T~}urFa>!oGxk3HuWECG1Psm#{BkU&6kGeF^&#_9g5~*q7wv z1;6`Uyx{lxgPQcQKGCOY)@S-$3AN}89oLs?)d`){DYfae&giV#bx!A%)CG0uqAvZ8 zeJT4=_NDAg*_W~}Wnap^lzl1tQud|nOWBvQFJ)iKzLb3_`%?C$>`U2~vM*&{%D$9+ zDf?3PrR+=Dm$ENqU&_98g8c;h3HB50C)iK0pI|@1euDi3`w8|F>?hbyu%BQ*!G41M z1p5j06YMA0Pq3e0Kf!*2{RI07_7m(U*iW#ZU_Y^CU&_9eeJT4=_NDAg*_W~}Wnap^ zlzl1tQud|nOWBvQFJ)iKzLb3_`%?C$>`U2~vM*&{%D$9+Df?3PrR+=Dm$EO-CklT5 z`$WMX)TEE~i9S`cKGWw)s6}7sxV}`YPUxggsZFPKMrYNob2_i2E~rBnbxD_h&pyIF z!al-2!al-2!al-2!al-2!al-2!al-2!al-2!al-2!al-2!al-2!al-2!al-2!al-2 z!al-2!al-264+@EcAED)!{NYA^M2=n1A(39{Z8|Kr+L5g{r3Yq&HJ4nei+zk-tRQ; zcbfM*&HJ6^{Z8|Kr+L5Ayx(cw?|k_(u+zNXY2NQN?{}K_JI(u@=KW6dey4fA)4bnl z-tXL;_Yw9H_7V0G_7V0G_7V0G_7V0G_7V0G_7V0G_7V0G_7V0G_7V0G_7V0G_7V0G z_7V0G_7V0G_7V0G_7V1xe6rvVe@GTI>0^DOPt~l?^tlph(HAd-}9(q(o2!I>{(U&g+SeHr^Q_GRqL*q5;{V_(L;jC~pVGWKQc%h;E( zFJoWEzKnet`!e=r?914fu`gp^#=eYw8T&H!W$eq?mqpn}*+-Z?917gvoB{~&c2*|d6IpSeUg2WeUg2WeUg2WeUg2WeUg2WeUg2W zeUg2WeUg2WeUg2WeUg2WeUg2WeUg2WeUg2WeUg2WeUg20%f6g_Is0<<?917gvoB{~ zo=+Ei{BgSA6Md>?eWuTqP>a6Maeb*)ozO|0QkzcejLxcE=X734T~LQE>XI(2Q&)8L zWA+v7E7(`CuV7!nzJh%P`wI3I>?_z;u&-cW!M=ih1^Wv273?e6SFo>OU%|eDeFggp z_7&_a*jKQxU|+$$f_(-1iY)sq`z-q``z-q``z-q``z-q``z-q``z-q``z-q``z-q` z`z-q``z-q``z-q``z-q``z-q``z-q``z-tHmVE{L3icK3E7(`CuV7!nzJh%P`wI3I z>?_z;u&-cW!M=ih1^Wv273?e6SFo>OU%|eDeFggp_7&_a*jKQxU|+$$BJW&&k}3F9 z&H7BAE1?#Bq2u~etvaETI;A$9))}2uyUyvnlDeP{UDPFAR;RA$s;+&)-s5K>*V5rC z_Eqew*jKT4?C({vuVP=tzKVSn`zrfe#lDJt75ggoRqU(SSFx{RU&X$PeHHsE_Eqew z*jKTyVqe9+ioNZ)!rm3~IAYji3h%rV-gV$Wc-OnmeU(3Z@4fJ@_umii`rw1`t`9#9 z@A}Pe!n;2DD7@>FPr|#79}n+3b0)m&(xvdO8#ltc?%oaWdi*%N>*dSvu2-+ZyMFvJ zyz8f*!n^+Rm+-EcneeW^{x!VoZ+{E#`uXSZu9cPWuJ!fsuFZL0#lDJt75ggoRqU&_ zwx8Zr#lDJt75ggoRqU(SSFx{RU&X$PeHHsE_Eqew*jKTyVqe9+ihULPD)v?EtJqhu zuVP=7pD6hB(}{v+eWuTqP>a6Maeb*)ozO|0QkzcejLxcE=X734T~LQE>XI(2Q&)6V z*VOeX`)c;p?5o*Vv#(}f?c7(huV!D(zM6eC`)c;p?5o*Vv#(}f&Ays_HT!Dz)$FU; zSF^8XU(LRneKq@P_SNjG*;li#j_N&=f zv#(}f&Ays_HT!Dz)$FU;SF^8XU(LRneKq@P_SNjG*;li#W?#*|nte61$F46F6pv5bwyWoO_BHHl*w?VHVPC_(hJ6kD8um5pYuMMYuVG)qzJ`4b z`x^E&>}%N9u&-fXlVYD@pJJb4pJJb4pJJb4pJJb4pJJb4pJJb4pJJb4pJJb4pJJb4 zpJJb4pJJb4pJJb4pJJb4pJJb4pJJcdvaexZ!@h=n4f`7QHSBBH*RZc)U&FqJeGU5> z_BHHl*w?VHVPC_(hJ6kD8um5pYuMMYuVG)qzJ`4b`x^E&>}%N9ZuTnV-4 z3mw;&YSjsy)G4*;w9e?P+I3FnmDB}w=%Oy^vO0A|S9MKYx~?0av9D!c%f6O}%QAX4z-iXW3`jXW3`jXW3`jXW3`jXW3`jXW3`jXW3`jXW3`jXW3`jXW3`jXW3`j zXW3`jXW3`jXW3`jXW3`B>}%QAvae-d%f6O)6+^ zuVY`wzK(qz`#Sb@?CaRqv9Dua$G(nz9s4@=b?ocd*Rii-U&p?VeI5Hc_I2#*!a?&s z7z%}h=6%q-4<0xW4x0Bt^FC)6+^uVY`wzK(qz`#Sb@?CaRqv9Dua$G(nz9s4@=b?ocd*Rii-U&p?VeO*3K zm`DT)Tl9sF>r1ujgih*|+H_iHbXM&;r}Ikcf;x0jmvmX3x}vMPrY>FA4c%0Cf_**v zdiM3~>)F?{uV-J+zMg$O`+D~E?CaUrv#)1g&%U00J^On0_3Z1}*R!u@U(ddteLeen z_Vw)R+1InLXJ600KE^)AKE^)AKE^)AKE^)AKE^)AKE^)AKE^)AKE^)AKE^)AKE^)A zKE^)AKE^)AKE^)AKE^)AKE^)AKE^(_Wna&}o_#(0diM3~>)F?{uV-J+zMg$O`+D~E z?CaUrv#)1g&%U00J^On0_3Z1}*R!u@U(ddteLeen_Vw)R+1InL&xZ?JTEc~2=(xUA zt4`>oPN_|&bw+2^u5&uCq%NpK7j;RO)u}7Gs%z@fb=}ZSb?a6O`v&$6>>JoOuy0`B zz`lWf1N#Q{4eT4(H?VJD-@v|seFOUj_6_VC*f+3mVBf&Lfqet}2KEi?8`w9nZ(!fR zzJYy1ihYWGihYWGihYWGihYWGihYWGihYWGihYWGihYWGihYWGihYWGihYWGihYWG zihYWGihYWGihYWGihXL!zJYxM`v&$6>>JoOuy0`Bz`lWf1N#Q{4eT4(H?VJD-@v|s zeFOUj_6_VC*f+3mVBf&Lfqet}2KEi?8`w9nZ(!e$j}(6KMWpb!zErDD=%h}mO{aB6 zXVtEAIe6-H&`ovgmQr7^Kgj+d`-AKcvOmcFAp3*t53)bV z{vi8<><_X($o?SvgX|BoKgj+d`-AKcvOmcFAp3*t53)aK8~@Z>mVK6emVK6emVK6e zmi@17D9b*}KFdDKKFdD4Wq*+ULG}mPA7p=!{lRyCZ9SC*2iYHFfAILPeN6W4gX|Bo zKgj+d`-AKcvOmcFAp3*t53)a)cOH*d7JjK#ozO|0QkzcejLxcE=X734T~LQE>XI(2 zQ&)6V*VLu!x}lru)-9!UdvpH}u|LHA5c@;y53xVQ{t){^><_U&#QqTbL+lT+KV+W| zu|LHA5c@;y53xVQ{t){^><_U&#QxB)oumKl`@?UU_ivf^Z<+URnfGt~x_$U9^ZqUK z{w?$VE%W{@^Zu>Pd4GugA@+yZA7X!q{h>G5A7X!q{h>G5A7X!q{UP>;*dJnli2Wh< zhu9xte~A5|e6;Y(FQbL6I-!#~r8b?`8J$(T&gs08x}XkS)FoY3r>^L#uBl7cbwfAR zty@azwtBvF{tvT1%>FR@!|V^UKg|9x`@`%Hvp>xKF#E&o53@ha{xJK)><_a)%>FR@ z!|V^UKg|9x`@`%HZyWm=?>VCX`?lA&xs0)ov5&Ej{lb2GJKG-{V;^H5V;^H5V;|eH zKg|9x`@`%Hvp>xK@PFCAzMjg0!|V^UKm1?zuYXMT?ZfO3vp>xKF#E&o53@ha{xJK) z><_a)oR1Z@w#Eui=%h}mO{aB6XVtEAIe6-H&`ovgmQuQ{ z9^GkmZjP`&!u|;RBkYf`Kf?Y9`y=d+us_272>T=KkFY<&{s{Xc?2oWN!u|;RBkYf` zKf?Y9`y=d+Y@h$_bM((xZm)B5nPQ(}pL&CRihYWGihYWGihXL!{s{Xc?2oWN!u|;R zBX6)j!u|;RBX6)j!u|;RBkYf`Kf?Y9`y=d+us_272>T=Xc;Sf?@xqfjr8b?`8J$(T z&gs08x}XkS)FoY3r>^L#uBl7cbwfARty@azwt93&cTYHVN7)}`f0X@E_D9(tWq*|Y zQT9jKA7y`({ZaNu*&k(pl>JfmN7)}`f0X@E_D9(tWq*|YQT9i-owm)l@BdGh+w0g| zZhwB3eU^Rp4fa{~S@v1>S@v1>*)98{?2ocP%Kj+(qwJ5q!Tu=wqwJ5q!Tu=wqwJ5e zKg#|n`=jiSvOmiHDEp)AkLDAFCr>5{PpM6(bw+2^u5&uCq%NpK7j;RO)u}7Gs%z@f zb=}ZSb?cT=x~(4F(Oum;>HHmIe~kSx_Q%*CV}FeOG4{vUA7g)v{W12(*dJqmjQuh8 z$JifZe~kSx_Q%*CV}FeOG4{vUAKNzCcH6%HKV81Qo^XMAUtr!B{NH*1_a9^47nt`2 z=6!*AUtr!BY<~S5V}FeOG4{vUA7g*)4fe;_A7g*)4fe;_A7g)v{W12(*dJqmjQuh8 z$JifZe=MIYJasBr*rwAuqqAz)Ih|Kh7u2DPx}?kM)D>OTHFfE_Zs?}EbxSGTR*&xJ zuI{P#l=I)nzL9++`$qPS>>JrPvTtPH$i9(%Bl|}7jqDrQH?nVJ-^jj^eIxru_KoZt z**CIpWWV{mu&vwc9`1YIn3-MR`o16>jup7RFF0@@R^a-+!1aBB>-z%N_XVE2@r&E* z>xr?Cv5&pMK2~7fvyZWlv5&EjZP_=nZ)D%dzL9++`^GoeH?nVJ-}namM)r;D8`(Fq zZ)D%dzL9++`$qPS>>Kl`!nU?l;c1=GS+(n&&MT=4>d-}9(q(n(imvLKx^!JPbW`2B zrIc=~M|X5r_tdNVZBA(u`zH2H?3>s(v2SAE#J-7r6Z?3>s(v2S{VeG~g8_D$@Y*f+6n zV&BBRiG36MCiYGFbm8gK>B2KQt9G5!c_np09lEGXx~xuJ(N$ejm#*uEZmL_il+tbW z=#K8{o_cj(4^BIs&Fq`mH?wbM-^{+5eKY%J_RZ{@**CLqX5Y-dnSC?+X7@^f1eZxWZ7rgXW3`jXW3`jXW3`jXW3`pV4r25WuJY6 zeU^QeeU^QeeU^Q8%f6X?Gy7)t&Fq`mH^0HYnSC?+<~P_kvu|eK%)Xg@Gy7)t&Fq`m zH?wbM-<)?2&twYEs$J)FUP)b0hc4=pE~`^lbXC{XrR%z(o9fmrrF2_8x}&?gr(WIH z13mP5wm=K}7WOUdTiCa-Z(-lUzJ+}Y`xf>s>|5Bkuy0}CV!vD1x3F(v-@?9yeGB^* z_ATsN*l#{|xOMw)>^-&^2!snmp>Sb194_>De&K-w;lg*{4Hs5bg$q5NU-s>|5Bkuy0}C!oG!l3;P!KE%}MUvu7s?+jUOomDB}w=%Oy^vO0A|S9MKYx~?0# zsczj;O1IUcJG!fT>eYQc&_nf|h0@Btm3=GwR`#vzTiLg=Z)M-gzLk9|`&Ra?>|5El zvTtSI%D$C-EBjXVt?XObx3X_#zj+Pm({5&x~gmH z(skX?O?B&*Qo5}k-O*j$Q?KspfgY+)kJ{~D8~Zl)ZS33Fx3OGs?Elq$;(v>eel#bXz^Tqr1ANUftINJyf3_>9L-ix0w$19qc>Ucd+kZ-@(3v zeFysv_8sgy*mtn+VBf*MgMA144)z`FJJ@%y?_l4-zJq-S`;P5n`k$VYUw+>9x+0U zcl^`sf4Lu9`xCl?=Blo#OV@QnH`T3MO6j(GbVqk}PrbUY2YRSJJ^s?avhQTy$-a|)C;LwJo$Nc=ce3wf-^sp{eJA@)_MPlI*>|$<+&T{b z**@Rf_y5u5>z^NIA7>wDA7>wbgMFO+_V!+1&+GS7J3HTC-^sp{edpiVZ?FG z&E@vzheKB{ghSWVrR%z(o9fmrrF2_8x}&?gr(WIH13grq9_g{3s9#Sn*v{q`R2Ta$ z_Fe3|*mtq-V&BESi+vaSF7{pQyV!TJ?_%G@zKeYq`!4of?7P@^vF~Ev#lCC%ShkOE z`~LrA`T9E2?9=Si?9*?s-`>{ipZ|}(zp|iqR!_TB8e*>|(=X5Y=en|(L? zZuZ^myV-ZM?`Gf4zMFkF`)>B#?7P`_v+ri#&A$8B&aY$b&V>SjTqqREg~H)n=$&_R zp#ukUp?BZSg{rD@q4(a)h2DQZ7kcwGUXFc^eeVCm{`GU43vGUn{nzgO-MRnoJSq#i z*>|(={#E)A!y+#D1=?0eYvuzCWOq0m z+5OHtk=+LlM0UUXZe({=Rb=;j??raM|9)im2OmUs|N7&4k=^F~Zu5Tkuh09}-6Ol# z*CV?(?R#9`_xK9@kK5}X_xk6MC+gQzrS(h$o7>&|rJ$F6 zFZ*8hz3hA0_pdu1igKE7q&%f8q3eQ)@` z+t1fOx3Zv@eJ}goH`w>G?`7Z1zL$M3`(F0F?0ebwvhQWzn~#MqU;gj5yZOFY=*Hz( z=%%`LODWw}kM8KM?x|Pz^*|5Rr$>6MC+gQzrS(h$dcL{c&0hff*!QvTW8cTVk9{Be zKK6a=``Guf?_=M`zK?w$`#$!4?EBdFvF~Hw$G(q!ANxM`eZO{W&TC(qeVTomeVTom zeVTomeVTomeVYCDIyRTDd!*T?*{A;-`@jF#pMOrXPqR;N+4r&UW8dfczVDsw?QDPE z_Hz6El?8q5``Gur!M=}uANxM`eeC<#_p$F|-^ad>eINV2H~!3zhi-PpL*2Tily0j> zcXU_x)T{e?poi+yBR$p=_3Nq9dZqzA*Ne^H!Tquy>Sy22zMp+R`+oNQ?EBgGv+rl$ z&%U31Kl^_6{p|bM_p|S3-_O3EeLwqt_WkVp+4pasx7W|(_WS?Q_Q(FC z%kAxLe_kTgeI*gPrIc=~M|X5r_tdNVdZ35u(<43B6ZPw<(t4%=J=Y7pyka{8><8En zupeMQz4@6-17w(nOK46q+yKk!er-`>tIk1H9vbu}4E>9%@wM|X8ky}GXldZ<1< z(qlbQzn&_sXByCRz0gYyUUf`^><8HovL9qW$bOLhAp1e~gX{;{53(O*KgfQN{UG~6 z_JiyP*$=WGWIxD$ko_S0LH2{&=k1rr_rHC6d!3uhIQuyJ_-ppt9}|CjW+u))&OXjQ z&OXjQzGXkievthj`$6`D><2wZd$4Nz^MC14Sun_ckp1A_+5c~k>6hEt+;%FIx|Ryv zR*&xJuI{N<_w_&z)u%^#tS9Q%Q>FDx1A49(dZ|HubC=O_KP>wETT_UT{P zZ*MdG_Fw*zW}jxCW}jxCW}jxC-m)KJKg52B{Sf;h_CxH4JU@Tvz3ugEFDna%*blKE z`ls7(Z)0~rjM>~rjM>~rjM>~mZ8!|aFI53?U;Kg@oZ z{V@Asugw^K|Cjq*Suo6gnEmj7+5hs-{~2#*LaFPS&~5eTj_&H7dUan9^iX|zq{n)q zemzxM&orRtdZCvZ)K~gi-(0t^BkV`mkFXzMKf->5{RsOJ_9N^^*pILuVL!rtg#8Hn z5%weON7#?BA7MYjeuVu9`w{jd|BUnT%XLKdeDX9%@wM|X8ky}GXldZ<1<(qlbQzn&_s zXByCRz0gYy>MMP%Z!~nnIUQv`%6^pnDEm?NqwGi7kFpI3CQTC(kN7;|EAN887QLo7w^_r|vugMzqnygW;$r|A?wyx!ybevj+> zJ+ANfxW3=>?z{0luJ8A_zTe~eevj+>Js*A;-}9T_#P@vkQJj68eVl!qeVl!qeVl!K z&&!wbJ+EHH*~i((*~i((*~i((*~i((*~ho+N7;|EA7wwvew6(v`%(6z>_^#;eh_(U z^uzR9qh6CW%6^pnsMlnTdQH}-*JO=)P1dN_WQ}@F)~MHHjk?Agb&WUb8gJA!-l%K5 zQP+5*uJJ})FDx z1A49(dZ|HurLXmkhV<=C_G9eF*pIOvV?V}zjQtqF+%x~(4F(OunBukP!C9;#1|^jJ^Sucu1unFjP+FZ5D_`buBx z8x84OeYg2w_Bi`-_T%iw*^jdyXFtwRG%K{v7V@3PnFg)4d}UE=%ohrmA=+D8q&A=POomU zpJYGDev?hezvY%u>$$pakB>PGBlk6wiPqLq6KgoWQ{UrNI_LJ-<*-x^c zWIxG%lKmw6N%oWMC)rO%iUNU1Q79BC3Wp;_9?vg2a3E6j?z@qqs;Wql$McKce?L<6 z!3U9|4?m0){pL53qK`g`6q)x$=6#WQUu51FnfFEJebM8`k)oF`BSo)XMT*S(BJ;k; zye~5Ei_H5X^S;QuFIriN6q)x$oAZ8>{UrNI_LJ-<*-x^cWIxG%lKmw6N%oWMC)rQ3 zpJYGDev?hezvY%u>$$pakB>PGBlk6wiPqLq6Kba5gPNf37Z>vXlbXWJ( ztNVJOhw9TKJ=PQT>#5RurU5_U-WQ9^KJh-BYjb>wzAsPmlCi zPt>ocO6!>h^jt6WQiJ+RU+WtU>05oLR~pv$x7km#pJqSJewzI>`)T&m?5EjJv!7-^ z&3>BwH2Z1x)9k0&PqUw9Kh1uc{WSY&_S5XA*-x{dW`)T&m?5EjJv!7-^&3>BwH2Z1x)9k0&PqUw9Kh1uc z{WSY&_S5XA*-x{dW3n2&kH5>jqr1ANUftINJyf3_>9L-uUr&|RGY#mu zUg)I;^_9NXHyYBn`cAJjtnZcSVL!uuhW!lt8TK>mXV}lMpJ6}4eun)F`x*8#>}S}| zu%BT+!+wVS4Eq`OGwf&B&#<3iKf~U!|8<7_4Eq`OGwf&B`!n;NeU5#OeU5#OeU5#O zeU5#OeU5#OeU5#OeU5#OeU5#OeU5#OeU5#OeU5#OeUAO+_H*oW>~rjM>~rjMTlO>T zXV}lMpJ6}4eun)F`x*8#>}S}|u%BT+!+wVS4Eq`OGwf&B&#<3iKf`{8{S5mV_A^`C zkMEsfKf`{8{S5mV_A~j)-FNO(?!K#g>eYQc&_ngxEuwP+#e5 zeWM|LtMBwm!}?ws{cwl+zxTj_$X@e) zZ&g)fuX(@Myx;r52a&xWei+$n-tRT<_nP;6&HKIP{a*8a?~NOgy?5_M_L}#5&HKIP z{a*8auX(@Myx(iy?=|oDn)iFn`@QD}T1}vY%x?>uZ0O{Ve-g_Ot9~+0W*kx4Y5Z z_tdNVdZ35u(<43B6ZPw<(t4%=J=Y7p)S$l7*ZM|7`c~iRm4@}bGWtOyciGRepJPAA zevbVd`#JV=?C03ev7ci<$9|6e9Q!%;bL{8X&#|9#40G(~*w3+_V?W1!j{O|_Irekx z=h)A&pJPAAelEd2!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0 z!9Kx0!9Kx0!9Kx0!9Kx0!9Kx0v1LEUevbVd`#JV=?C03ev7ci<$9|6e9Q!%;bL{8X z&#|9lKgWKK{T%x__H*p#*w3+_V?W1!j{O|_Irekx=h)A&pUcN~-@6yv-K+b0poi+y zBR$p=_3Nq9dZqzA*9*PWpuW=A`bIFDx z1A49(dZ|HurLXmkhV-qz(<=?@du8;4M)XJhY4bTX3+xxzFR))=zrcQh{Q~<1_6zJ6 z*e|eOV86hAf&Bve1@;T<7uYYbUtqt$eu4c0`vvw3>=)QCuwP)mz{r>ZvR`Gt%6^soD*ILTtL#_V zud-idzsi1<{pyze0{aE_3+xxzFR))=zrcQh{Q~<1_6zJ6*e|eOV86hAf&Bve1@;T< z7uYYbUtqt$eu4c0`vvw3>=)QCuwP)mz=)TDvR`Ds$bOOiBKt-5i|iNKFS1``zsP>Ea$g`&xi1u| z+!qd4?tAB*%6$h8RPKBC-O7DcRh9eRd#`fe`|nro`{0AheII^Ux$if>soeL`N0s|N z`J{5+@#B^I&YY>-cj;2)z8g0x_uai)x$p7g%6%_iR_=TCs&e0tKUVJh>8HwlfB8%0 zzL}ZIeSiIH<-WiDt#aSbKUeNsS*hH&zFxU+bKWnqUu3_?ev$nm`$hJP>=)TDvR`Ds z$bOOiBKt-5i|iNKFS1``zsP=({UZBC_KWNn*)OtRWWUIMk^Lh3MfQvA7xT&84<00U zKUAL{>9L-uUr&|RGY#muUg)I;^_9NXHyYBn`cAJjtnZc44;s-Q^(XzP(Fg38*e|hP zV!yocO6!>h^jt6W zQiJ+RU+WtU>05oLR~pv$%IF7;=#To7e$=S`tbg5n9_0%A74|FaSJt*~EV zzrucn{R;aP_ABgH*sri(VZXwDh5ZWq74|FaSJNj*{`x+WxvXPmHjIFRragwSJ|(!UuD0_ewF{r>ZvR`Gt%6^soD*ILT zuBSbwVBWJ|Wxu)oRrae}_ABgH*sri(VZXwDh5ZWq74|FaSJ{r;YuwP-n!hVJQ3i}oIE9_U;udrWXzp}Oc#QqibEBVasM~^bQAM1(w^;Bs+(}14q zg-Ha=&@M-@M;%-tRZ>_nY_o&HMf4{r*orsoZbg?>F!F zoA>+8`~Bwqe)E36dB6YFtIGX9{#d!+yx(u$?>F!FoA>+8`~Bwqe)E36dB61>%r*9F z?AO?@v0r1q#(s_c8v8Z&YwXw9ud!cazs7!z{Tll<_G|3d*srl)W533Jjr|(?HTG-l z*VwPIUt_=KYk!UXTHZN(JhA(U`t?+4J=1`m>xEuwP+#e5eWM|LtMBwm!}?ws{h$&3 zQGe2p8r7fmulhHQZT>ry>+ILrud`ogzs`Q0{W|+~_Ur7|*{`!-XTQ#Vo&7rdb@uD* z*V(T-j&=6y?AO_^vtMWL@w1tA_Ur7|+53K5S!eIq^Ooj4`vm(0`vm(0d;f0%|9=JZ zo_&ISf_;L0f_;L0f_;L0f_;L0f_;L0f_;L0f_;L0g1yJkJdSAIvrn-1J-7LD$F?_r z*IQ@5&VHT!I{S6@>+ILrud`ogzs`Q0{W|+~_Ur7|*{`!-XTQ#Vo&7rdb@uD**V(VL zUuVD0ex3a~`*rr~TiajVzn;(Te)1%{yI)V0)-w(0xnAg{2KAM`);Ai`xB5=6G_3EH z(GMEYAN42ws8Rh{|Ehn}nEw3<`wjLR>^InNu-{<6!G44N2Kx>68|*jOZ?NBBzrlWk z{RaCD_8aUs*l)1kV86kBgZ&2k4fY%CH`s5m-(bJt+;6bo$gt0_&#=$1&#=$1&#=$1 z&#=$1&#=$1&#=$1&#=$1&#=$1&#=$1&#=$1&#=$1&#=$1&#=$1&#=$1&#=#I*>AAl zV86kBgZ&2k4fY%CH`s5m-(bJNeuMo6`wjLR>^InNu-{<6!G44N2Kx>68|*jOZ?NBB zzrlWk{RaCD_8Y$TH}bjN{r$P!PnFg)4d}UE=%ohrmA=+D8q&A=POmhq@0HOH8qpv1 zC;g~V{aOF2f76)$UH@nEx$}AUdG>ksdG>ksdG>ksdG>ksdG>ksdG>ksdG>kso3AO# zv)_DdGS5EGKF>bSKF>bSKF>bSKF>bSKF>bSKF?m}J^NMmtL#_Vud-idzsi1<{VMxa z_N(ky*{`x+WxvXPmHjIFRragwSJ|(!UuD0_ewDq)&1Y8Gud-idZ_fH%W9#RR@B2La zJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NRJo`NR zJo`NRJp26S&%ONW?x#;zcc=AC1A49(dZ|HurLXmkhV-qz(<=?@du8;4M)XJhNk3{- Sf7ZY1-!!Iw*Zimages/noclearcode.bmp images/noclearcode.gif images/nontransparent.xpm + images/rgb32bf.bmp images/runners.ppm images/teapot.ppm images/test.ppm diff --git a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp index 50176d2430..4b3db26685 100644 --- a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp +++ b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp @@ -222,6 +222,7 @@ void tst_QImageReader::readImage_data() QTest::newRow("BMP: 4bpp uncompressed") << QString("tst7.bmp") << true << QByteArray("bmp"); QTest::newRow("BMP: 16bpp") << QString("16bpp.bmp") << true << QByteArray("bmp"); QTest::newRow("BMP: negative height") << QString("negativeheight.bmp") << true << QByteArray("bmp"); + QTest::newRow("BMP: high mask bit set") << QString("rgb32bf.bmp") << true << QByteArray("bmp"); QTest::newRow("XPM: marble") << QString("marble.xpm") << true << QByteArray("xpm"); QTest::newRow("PNG: kollada") << QString("kollada.png") << true << QByteArray("png"); QTest::newRow("PPM: teapot") << QString("teapot.ppm") << true << QByteArray("ppm");