From 18705be7f6c961bafc6aaa59a5d71e42af7551e0 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sun, 20 Nov 2016 20:11:22 +0100 Subject: [PATCH] #294 Fixed regression, reading JPEGs containing strange APPn markers without identifier string --- .../imageio/plugins/jpeg/Application.java | 5 ++--- .../imageio/plugins/jpeg/JPEGImageReader.java | 2 +- .../plugins/jpeg/JPEGImageReaderTest.java | 1 + .../jpeg/app-marker-missing-null-term.jpg | Bin 0 -> 5856 bytes 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 imageio/imageio-jpeg/src/test/resources/jpeg/app-marker-missing-null-term.jpg diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java index 2a205ba6..80e07237 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/Application.java @@ -29,7 +29,6 @@ package com.twelvemonkeys.imageio.plugins.jpeg; import com.twelvemonkeys.imageio.metadata.jpeg.JPEG; -import com.twelvemonkeys.lang.Validate; import java.io.ByteArrayInputStream; import java.io.DataInput; @@ -48,10 +47,10 @@ class Application extends Segment { final String identifier; final byte[] data; - Application(int marker, final String identifier, final byte[] data) { + Application(final int marker, final String identifier, final byte[] data) { super(marker); - this.identifier = Validate.notEmpty(identifier, "identifier"); + this.identifier = identifier; // NOTE: Some JPEGs contain APP segments without NULL-terminated identifier this.data = data; } diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index 5cf4ed9b..07a79b97 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -723,7 +723,7 @@ public final class JPEGImageReader extends ImageReaderBase { catch (IOException e) { // TODO: Handle bad segments better, for now, just ignore any bad APP markers if (segment.marker() >= JPEG.APP0 && JPEG.APP15 >= segment.marker()) { - processWarningOccurred("Bogus " +segment.identifier() + " segment, ignoring"); + processWarningOccurred("Bogus APP" + (segment.marker() & 0x0f) + "/" + segment.identifier() + " segment, ignoring"); continue; } diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index c502d5a2..dbf722e5 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -95,6 +95,7 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestUpJ4j7A{&z#6mpD?SC@L4_~R=(k(vwgzmBXui!s;kT@ zIy^koYF1D{P^8bhR=z%=esUkw4g;|0Ky`>Sl2pJZt z=jH==RH1q-Hi?R8)%>{t2@S^EKoqMvn8MLutmlrco5$6>!#kcE()Wiq#EGLLD_&Q?wy(_CcJT&MiMIu-KhV*1!N3p{~)W2~MB`7rHtkiRTnU9qf$9qroE#0--3F6cnnO#0^LwT#_U~Pf}2+ z9;Q)2uhF14>ZrWaTe>8kBw?z#i9U#mTm_rE>iVyKn2oa0c z;n5JaXaSCTe4c<$fsPhJ10orTdFpsZku;YlpedkIJeo%eNE(>BJdqC1$V6yqpzC5Q zwRbV6gp@9Dgd~jS>T(4%tqWd6l#UoetYD_oxQQN?wtTU!E+wGAJ2>U>_&5U6JT9N& z2`Ijhf~W|Qlw^2(T0n7iNm@t>1P}*FiVIPj5^^Xm1W6npxj1lw8X7d79|zhbv|zG8 zp!pC*v27ACN%CnfEC`}GhXZ4AfaUU3iNhmdB(?%U9=p-RCOOfggWoQ=eWBMG2yKB7 zs131`KtEsrg+}B=Tep^*vB3g;0>l{z4njI=(MjOo^G_=w@Ba0P$%!-IW4ek!z&JQu zR41es8NJb&zCl8`hQ!bcdLyl*{pgwWRC*l!fY;8mqK9~`ydIvJYN|WI=0WlXd6E=R z=gDW}adJ1=NLG>cWG#6Q@L5vLn+nk*gPKaYQh}6&(x*mIp_DE4EBP}yntDLqCOd(r zUORy%GrG)6QL^}!9wm7!Div+fJIfS_lSHM=Y|&*#yGn#+iXV#@#*_J7G)??K}TAIE&%Jf)mj|vMt9Y;>ZjPns#DAMjE;^#SHkG)OBjj7z{qTrfz;GcA~7CgY-(<9X=!ON%6hD| z#aJ^7OABm-P(>tK#OI4Fq!Ovce=Y14q7WuU5h}sY1`GWAfjb@qH=&LgPIkCPl3WN+ z@O+3h_@5C8pWYZJAD%%(3~jwa>b!Qx0lv-5ii?Kwx|d^J7ALP02#rP=o0!^;8*gVn z!PRZbRCkYQzO(%N0|JAB=R`)$o%i1S=p{>I&grvqe@$`Kn=$I7- z*3N7B(wRFBR9qC;xX51`E>5l!8jW>rvF*l7QmyFkEoj~Uw4yf)db1w(0+R4i9=gUQ ztPw{-a3utLAL+v18IFW2LGPe}2SfGkIeBMh*-9h4DQU!joUkh?+%52PkY)ti6=n#7 zqwNU0!c1>zgdfsoTj_~h6yaxFTpbjUAlEZ%M7b$`oV9#KXULssj{>r&($RGe*eS~Q z2DACd*Uzyvz!l|2)JjpVyw01lbujyZ6A@Btmg#M4>*zY06OkVsrr_MZyYECy#m>28 zeAB)iQxXd|i59;lT2vmrAGu+5@oP8T{AD*> zG7~;H{cC*Uj4Y*aM^kxa@#Vw&>_Xn(JZ8zi+LjF4l^p6FBkg{;ZSJLkl!d9iye$Wp zz3y-Rk$D_7?ru_xdw#v*PSF_Y^9}N=<0f2O7xwg*UH;u?UOl#XW?x{_Uwn0XzMgEf zpMx!s{dn&|Tr^OHTN1 z*t<66<`Ih?)4IEr6P3m~TTA_BEO(jtRra9O?Yv(exeedk+8MCt>|j=4dDrMGLx~*` zD_d?VQ(oWx;K;zj)`c4^%@9*2Rl&wE!P*~pZ?NzGb z%HZ6Xi@Q#DW);L&r5k1tH+}YUUDy#83BuMN zNiyk4EMrmN_U6_nO3Ucp%~9=Dil}Xkbv1VGPj8fbQg>=!!s4RJsYz7}oyhl!lzoS$ z?2q;;-FsoXG;v(!DeP{R#57)2K@6I*f z^I2E?H_;0#zv??YdVBe}*39-c|9h_Io7N~V^;cX!T3a(ixiY@WqL!+4O8=2Xo%N%e zJll_-l0Wx4QI&6g^Ot4I`pU|G-P1Y$r|r?RtM^-rmPDj^Y@V5LEB*0~cFBa9}v$<)$4iwTtb~IT}@t+dOH} z$Nd$X{JtF65f`2pzA)+2$|vznmA{?~I&%MMkK$72?YqUzU{q zV9F~=n)>^#rjz;~+a}&`HkrR5S!c4Wxuaq6fylkap9~Ft)8qELtbF2}k9t09Pk!}u zsB!zZVK;3GKi*>cJb9b3U7veb)S%a{`qF(hlMYp$Ug2*yeDGqQ^m(}5N5%KoxP*=U zL%#Z9QTZrQgwy(K#ns9mKWvl7yz(=6nS zIreqv{`3Wz8w@%_PS+oM9-6-}eS??%%KD0Vvzkk2&jyQFPVihy=SdvB$v%f4`E&-4 z?JvCCK5LLg)?Zi`^t!jzwWoO$UOqGaj`TZ=zV~mv$oH&!_=Vj+jFOp! za(3SOz3j&Lu~RbbjyMZ(P=@T#u_ea#!aw{UJ>s7|;UwS>3#2uFOiIq%cJA4?!w2pu zQq5h~XNMOIKdYLYkXZhFddD#*Y74R(U(n_4nj6KJr(7=)wFr4*-dpFt%DrQ_Zvb}b?%cz@_)Q*LWNHbY0B4o?V16Rz(4;ndG(njWs+^-h(1#rmJfv=>oNi|f;! z$`S*NZmg{gsG5>#|GB-=Zny)E2k8YkH_+eDS$3!}6KDI8gYm&5Q!l!pUQ5UT>zI^b z*RC27je_m^imHHDAU{n>(<3_IESs%BMXs~c@4}$za#WagDHG{QEpq1oY{<=scJVWR SiVE|x(+W6wIe8g~ZT>&1OtBIG literal 0 HcmV?d00001