From cd797f81167b6b1b1229577d5764b0ca1fb0b039 Mon Sep 17 00:00:00 2001 From: Randy Date: Mon, 11 Mar 2019 23:56:45 +0100 Subject: [PATCH 1/3] add fuzz target, dictionary, iphone png's --- tests/pngsuite/iphone/iphone_basi0g01.png | Bin 0 -> 384 bytes tests/pngsuite/iphone/iphone_basi0g02.png | Bin 0 -> 302 bytes tests/pngsuite/iphone/iphone_basi3p02.png | Bin 0 -> 303 bytes tests/pngsuite/iphone/iphone_bgwn6a08.png | Bin 0 -> 2573 bytes tests/pngsuite/iphone/iphone_bgyn6a16.png | Bin 0 -> 2267 bytes tests/pngsuite/iphone/iphone_tbyn3p08.png | Bin 0 -> 1558 bytes tests/pngsuite/iphone/iphone_z06n2c08.png | Bin 0 -> 2393 bytes tests/stb_png.dict | 30 ++++++++++++++++++++++ tests/stb_png_read_fuzzer.cpp | 19 ++++++++++++++ tests/stb_png_read_fuzzer.options | 2 ++ 10 files changed, 51 insertions(+) create mode 100644 tests/pngsuite/iphone/iphone_basi0g01.png create mode 100644 tests/pngsuite/iphone/iphone_basi0g02.png create mode 100644 tests/pngsuite/iphone/iphone_basi3p02.png create mode 100644 tests/pngsuite/iphone/iphone_bgwn6a08.png create mode 100644 tests/pngsuite/iphone/iphone_bgyn6a16.png create mode 100644 tests/pngsuite/iphone/iphone_tbyn3p08.png create mode 100644 tests/pngsuite/iphone/iphone_z06n2c08.png create mode 100644 tests/stb_png.dict create mode 100644 tests/stb_png_read_fuzzer.cpp create mode 100644 tests/stb_png_read_fuzzer.options diff --git a/tests/pngsuite/iphone/iphone_basi0g01.png b/tests/pngsuite/iphone/iphone_basi0g01.png new file mode 100644 index 0000000000000000000000000000000000000000..33db08c5b3e519239a589541910760cb3081189c GIT binary patch literal 384 zcmeAS@N?(olHy`uU|?}hck&EiP+-&9QJ%)Yz`*P2;S$8az@Pxa9Bd2>j4ZWYNg##k zj=qiz3>*8o|0J?9FfcF{2e~^jtUD+35~MQOBgmJ5p-PQ`p`nF=;THn~L&FOOhEf9t zhF1v;3|2E37{m+a>Eal2G=!0_#en1S|M}N47R}_*SUf}bW@Yi3DN$IS=%3IWkf#wp$!*%Oi`pPj+fv7(J3u{WdbRih)L4^M`2Dq{@qm%Cfu z9GTRsD_`;S%6ijd>{BKx`6@JA=e|~7vv!?j4ZWYNg##k zj=qiz3>*8o|0J?9FfcF{2e~^jtUD+35~MQOBgmJ5p-PQ`p`nF=;THn~L&FOOhEf9t zhF1v;3|2E37{m+a>EamjHiVJufC9%J|8FPlZfd3J9MAD6kv5S?dj2w1 zl3|HNa@MxuO-C)1S|*%Q7Ykp0W4fSfqHA%`+sB*&^-gTuYyNF$VZE07&#hVK#3Gh$ zMq=;O=2`4FVdQ&MBb@0M@%_ ACjbBd literal 0 HcmV?d00001 diff --git a/tests/pngsuite/iphone/iphone_basi3p02.png b/tests/pngsuite/iphone/iphone_basi3p02.png new file mode 100644 index 0000000000000000000000000000000000000000..1699e9af6c28e029dc68c1a525af44817681227f GIT binary patch literal 303 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 literal 0 HcmV?d00001 diff --git a/tests/pngsuite/iphone/iphone_bgyn6a16.png b/tests/pngsuite/iphone/iphone_bgyn6a16.png new file mode 100644 index 0000000000000000000000000000000000000000..9046336a89ee08db49c7204c0279f74d239b86b9 GIT binary patch literal 2267 zcmeAS@N?(olHy`uU|?}hck&EiP+-!&y1AZ#fq~c4!zGA;fk6R;IoKE&7>cW^zJL^_ zJNh~@Fl_AS{*%bcz`(#*9OUlAun$PavK9A3>>rt!fz6oxj%%vAI=t&a8qb*NR&v@ab|p` z$iLZuH*-b{OV2@$7X~bj91U!CADWo-HZ+SK*^r`=Eo;VIA<&^<(0ag#X=#wBSM&xx zSAzsjF$I3(32iDp&O9X?&I~32j*RLz9K5cj8s-Ggacw#MVFqiPfQM3mLjreW(N3MG z!4^%nH=0Z%8dYbs%PdJ`a&v4K_~F=^x1o7TZgkKlaf|LHDZAUwFxhgn2+VLukZUYu z@e^DTq7}5W)!U-k`9^DLL?hD^MP|+pCy74~7}-6J)@h|a-!&!XbCQL+%4?3mNw#T? z3QUD8pEyJWEu0>RHD+zqy6V28UD~2u`9_t|UP~=86y5B=&?v!lnL|f$L+b%artchklmgaYU;2+v{{zGI z0v_pr1`(G7+(F@SOP}qYzUqGu_svP0wyCJz-y$(j;;f_rcZssW1ui9)OB^~18`=&i zGMRJOD1PX3SbTB9G4(wMnPU#{i74<%c^v+&_q9=dWozCNDZ43N8NR0)S*w(F*)~oM zWmCy||1bJLZ-YFeY@;X3Cyq4=8@dlzGL>`eQTWj5u=(bcXX1Mf%Dy=))8aVm)^Zai z{UG_BlcV0mthyMx@`ZK~-}B51ocP- zImk<~XZCt-{&1i* z#=G{NOV-ZZm1$v1j12XkMnrizCntSrSAG39*=xrcCOeiUjvj>xE(+}qjEzc6w>e~# z3mOl|GM(qBQTXuuy!^x6KNa`0pZ~PEUj6J`?#vt+@7mJntZvtp&$xp;pD(eQr=so7 z@mk^Xp>(kVr3Fd?4i4@KGL0rol`LX{5v~c$jj}A?1T7pAgd6`$otWS6`?J<=!u;K} znQ?DC9#=TOy1hC`ThD9jgy~*-x=)|%nBrEV=GHKAsgd^FG)8@P~b~O9;JzSjo>9?(>eSYz!8V!%fyA-}owhU5IzdE%iLg~tL{9^(K$s)gzL*wwzY*mrE$Ru{C6&LAOCXCZ0&xnpxxg+zn;;bs%y_2Gx^dM z|DGA`vZu~Ix|S+dptwNcfvbb7gX@9j25!b>6Aw8^C`@+mII1}*v#%gxsr~lMiNdSC zbUE#Oyl$Swy6f8t-(FO`>fImmEksj#)s(coZvwkg*kjWerJ4L#?r>;uXmFG$KX7QM ze3PW|YlfF1n{!W&pJ2bGP}al=8kd&e-f~LtYL(x?I|b?AWo{?m-c$8@!l}URQ@Xi! zPf>Eab5`wTO6}H}tTG%Hf(42XTn_XxNOv|bJ#aYYo3YekpXD0NN{(*n9Vcx(Lltzw zUR*DYN}ImQc1gjx9lO2z-f#QMt+l*NbG`LallMZ&hcs_aIINT4x`3O}nyHK>hhxL! zn~~kSZu*2wW48Znd8FgY%%H_QU7VY&d}E$@tf_QL?%Wr*B>Zph zU$Q54a?n9Nw@Z3A7wS!`SRHwwt$~+On<;0hnV7Ts?wNp~K1etYk*uO5?Rj zJUxX*)}A@bJl9DcQuhC^cfrX!q;U0wt~*byj_UE1GIBG$ zc^Vd$Y<+uWH)~*``{zw+KW~JXOlxKMY<1#dZ`ste zmCtNgP0!C2v$*#3o4&D;*h#+V%2N?%n8a8rW=2%V+_-W6?V1yQ+d|B{7adynEHPH; z&}O@7Y`r`0o`1n(u(ye4f`O!*qFd>tHKJ;UzbbpCbp>A)773fQd+wtOS z%C#T5edf^T6Q{V39#dY}ZF~3Nsy8Xor5g=)-MlGsZJC^zIREM9=|9&RIo0}Xv}5aZ zoA$f&GNX{L!wQ~D*Bzs@T}t@_69nH?%t*d=d;gUB-}Ovc>s!@>xV8CP#muff6^qsB z)qV3Ok8j&_F~775Zt=-$T4&qjU-Vt0#p2y9cWZTPyHfVUrz@gYy#4HIFfe$!`njxgN@xNAOunwz literal 0 HcmV?d00001 diff --git a/tests/pngsuite/iphone/iphone_tbyn3p08.png b/tests/pngsuite/iphone/iphone_tbyn3p08.png new file mode 100644 index 0000000000000000000000000000000000000000..3c224d092e41a36a81ae79b27f6b3a92bc4d283c GIT binary patch literal 1558 zcmeAS@N?(olHy`uU|?}hck&EiP+-!&y1AZ#fq~c4!zGA;fk6R;IoKE&7>cW^zJL^_ zJNh~@Fl_AS{*%bcz`(#*9OUlAu9RJDxa12Pkns+qmO^x{7qb+*_4?tAZ8FwgY)t@*YE#rHn{`W1J*_U`ps`}2XX{+k~E`r@K84;Tke!;(;l6es9a!Ww6U(%^wFcLz@SV06DO*F_D{>n;raXb?}rK-i?TNo zLBYiviqjdx)_uv^z$Tj~`}Emz`PpWBwNvD5e#q&^?U^C1c&h6CJ=-nYwmtgt@^ZmW zKTeI!p{pX@xBranOFhjcAY03&sOZ_KFjLigR>7AHMZLH^9lyW7PcAAlvXHbpFe`3H z0b^xl<%yFgC+2XTnl8B@y!6XU38TmB?ktw7=}X};{j-SAyX4ao&r0$8H!ogP>>S=G< zv`OWpBukxyq+@8PXjXRi!?N9hAt5a7i(?!(-7eg@!}R3&bM`||R|zn;welvvycEb8 zcbWaq{g>y{($gP*czD>N;6X!07F*-Ri-C;mR;+Lc%@viBk~&fm^7PHk&Bc6LvnEb# zY-ZUYVosY&wlt>!x;Kci;J6EmBVjm za8MA_fsY?Q7Ff;QJbUB1b$qXwSxpx_4sW%c|IRTucyftzb+vU=R8&B4aPy-_j}{y} zxA4wUX|n~jACp8}T@Gw4RDM+c)+sgh=^GXfv0rr>SJY=6$mg19@3v^;#=r*82Y-Hk zew0#IwKq7wIz`1okk5J|G z&r5i8+W&5n{doQH!`;uE%gfEJtgVk~t2pfBm$hP9KJCx!4+VeLFjki=(TnLYcXpbv zaQ)ouYY9JYKfK8~A$E#A*DG7ze^VU~XfZclJ^t%nY3qz>5+$Xj3zsi*&cX|USo9cl?6&8*9UL&5L zbNB6A*7Nhj&V6~t96$cnDIN@3vV8gC19{Wmyq}e}_zg?h%!AeE=iBr9HL%^Rt=TTo z>u~Ys#en%QU+b5cXg=O`QlsVs+2JcjZ)%Z)&GoR5*iX8r? z#5j|8PG5ORMTwhSdy1dX9b3>4Igw>~!lrvQ7GGb~oU7gT z>3=4AC+hLz$D4kBC^&R!0?YD* zprA=IRzJ2+*N^}A+diaX+2fxRRV-Ln9+)%dpT8Jy*}FTIFNNl5uk| Z^Vff6SD!H>je&uI!PC{xWt~$(695&r+s*(0 literal 0 HcmV?d00001 diff --git a/tests/pngsuite/iphone/iphone_z06n2c08.png b/tests/pngsuite/iphone/iphone_z06n2c08.png new file mode 100644 index 0000000000000000000000000000000000000000..de5dba3437ae249650e1b73808578097f6108e09 GIT binary patch literal 2393 zcmeAS@N?(olHy`uU|?}hck&EiP+-&9QJ%)Yz`*P2;S$8az@Pxa9Bd2>48>JdUqA}e z9eo`c7&i8E|4C$JU|?V@4sv&5Sa(k5B}iqmN02WALzNl>LqiJ#!!HH~hK3gm45bDP z46hOx7_4S6Fo+k-*%fHRz`$|b)5S4F_PXGWuL=^!K8hbU;Q=87-opmGhaZ+$$nY&c z{II}E=HC6i*UHh0f`lVE-O#wjtg&7Hj0B9o_zPK!*M z$ogz%@-)e1Gm|E99y@>E{Q&t;U16X6168u&RDtykHT4bcWI}gG8=+5v0q6M(gvo;0 z9np^WgkFhV_|9J-NCuSb@OF;ldNt|7^oE^v4Ug&OPO*%AXY`7@4)3MX!Z+-0xy}0LA9D^136L@A z^Mu*Ww{*UwC7AK<*4*KHD4!|uH)9wRvG5wlMz#}Io!9bJZ8cck7;AcG)r0WP4O~aQ zvPWwtB|R zgXhHZ%sy;(n<4s0XJT5T&3^`AM#3<-afZ>8DGQcy*s{(zdDxFHZ_|g#jx$UiEt#O! zX~Q|?CA$O*4-*?>bA#gng#-Zu4h(J&mm$}a69LMO{T#+jZ$12y0cp-C39j@?2N{6hyu=T(do@n8i-Vde< zA^j1uL0eB;T@cb6B^ovLMQFkm`2_+292zVlOk9ku4NeY<2ySYV2J@zp6_*xxw`#I( zOW85$fwzkW()`9)?QC z8-#4LN-{1ka&HziUADr&y;GHI%|~_)78WKZ#>NH*2L%NI0S*q97G9+_6A~M_j7w%D z9BSZ|)ie1KAn4@CBdMwKL?F<~fmcq~;!A>I(?JoFXA3s4beeMHJY@gCQo&@yIFG@< zLH&U61I`cDE%z1vay=E#us{5R^BTX!{fD*AA4D&TtIVHR>-16ZD!a-1i+c}$5Swg1 zWACv?qG9?QD;w|rXXs;aZ%{rU_<*B;#e(S$$+&ccH9xBlnuQ58trlvp2o%*rs^1D~G%5>y!l+$tvGd?* zQAfRwBDYDxn`AULEk4zzroBr?!YFwX=jNV>lml9}W-m8*cRNeX33@z-I|l+!45?&fxzv*A&Lu=SoB0!O+u#8eEGyE$EXLM~o(aTXVK7V%L^7US&h zh;TiiW>faCfTKHDBF5>l7+3#gTe~DWM4fRKBHT literal 0 HcmV?d00001 diff --git a/tests/stb_png.dict b/tests/stb_png.dict new file mode 100644 index 0000000..3f5e673 --- /dev/null +++ b/tests/stb_png.dict @@ -0,0 +1,30 @@ +header_png="\x89PNG\x0d\x0a\x1a\x0a" + +section_idat="IDAT" +section_iend="IEND" +section_ihdr="IHDR" +section_plte="PLTE" +section_trns="tRNS" +section_chrm="cHRM" +section_gama="gAMA" +section_iccp="iCCP" +section_sbit="sBIT" +section_srgb="sRGB" +section_text="tEXt" +section_ztxt="zTXt" +section_itxt="iTXt" +section_bkgd="bKGD" +section_hist="hIST" +section_phys="pHYs" +section_splt="sPLT" +section_time="tIME" +section_offs="oFFs" +section_exif="eXIf" +section_frac="fRAc" +section_pcal="pCAL" +section_scal="sCAL" +section_ster="sTER" +section_gifg="gIFg" +section_gift="gIFt" +section_gifx="gIFx" +section_cgbi="CgBI" diff --git a/tests/stb_png_read_fuzzer.cpp b/tests/stb_png_read_fuzzer.cpp new file mode 100644 index 0000000..613eeb8 --- /dev/null +++ b/tests/stb_png_read_fuzzer.cpp @@ -0,0 +1,19 @@ +#define STB_IMAGE_IMPLEMENTATION +#define STBI_ONLY_PNG +#include "../stb_image.h" + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +{ + int x, y, channels; + + if(stbi_info_from_memory(data, size, &x, &y, &channels)) return 0; + + /* exit if the image is larger than ~80MB */ + if(y && x > (80000000 / 4) / y) return 0; + + unsigned char *img = stbi_load_from_memory(data, size, &x, &y, &channels, 4); + + free(img); + + return 0; +} diff --git a/tests/stb_png_read_fuzzer.options b/tests/stb_png_read_fuzzer.options new file mode 100644 index 0000000..e0c8a84 --- /dev/null +++ b/tests/stb_png_read_fuzzer.options @@ -0,0 +1,2 @@ +[libfuzzer] +dict = stb_png.dict From af516b99ffdd3b01c7a77b1673a871aa7503d761 Mon Sep 17 00:00:00 2001 From: Randy Date: Tue, 12 Mar 2019 00:14:16 +0100 Subject: [PATCH 2/3] fuzz: remove some chunk identifiers from stb_png.dict these chunks are not parsed --- tests/stb_png.dict | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/tests/stb_png.dict b/tests/stb_png.dict index 3f5e673..2a27994 100644 --- a/tests/stb_png.dict +++ b/tests/stb_png.dict @@ -5,26 +5,4 @@ section_iend="IEND" section_ihdr="IHDR" section_plte="PLTE" section_trns="tRNS" -section_chrm="cHRM" -section_gama="gAMA" -section_iccp="iCCP" -section_sbit="sBIT" -section_srgb="sRGB" -section_text="tEXt" -section_ztxt="zTXt" -section_itxt="iTXt" -section_bkgd="bKGD" -section_hist="hIST" -section_phys="pHYs" -section_splt="sPLT" -section_time="tIME" -section_offs="oFFs" -section_exif="eXIf" -section_frac="fRAc" -section_pcal="pCAL" -section_scal="sCAL" -section_ster="sTER" -section_gifg="gIFg" -section_gift="gIFt" -section_gifx="gIFx" section_cgbi="CgBI" From 06374082843275af71e1ccc4ca28e13fe3e51ed7 Mon Sep 17 00:00:00 2001 From: Randy Date: Tue, 12 Mar 2019 00:59:20 +0100 Subject: [PATCH 3/3] fuzz: fix error handling --- tests/stb_png_read_fuzzer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/stb_png_read_fuzzer.cpp b/tests/stb_png_read_fuzzer.cpp index 613eeb8..0e14e1b 100644 --- a/tests/stb_png_read_fuzzer.cpp +++ b/tests/stb_png_read_fuzzer.cpp @@ -6,7 +6,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { int x, y, channels; - if(stbi_info_from_memory(data, size, &x, &y, &channels)) return 0; + if(!stbi_info_from_memory(data, size, &x, &y, &channels)) return 0; /* exit if the image is larger than ~80MB */ if(y && x > (80000000 / 4) / y) return 0;