From d5a6568b21e9ced7ce688f40e9c511e216912685 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Oct 2017 00:38:52 +0200 Subject: [PATCH] Add a fuzzer for ZIP reading code The new source file needs to be compiled with a recent clang using libfuzzer using a command line similar to the following: $ clang++ -g -fsanitize=address -fsanitize-coverage=trace-pc-guard tests/fuzz/readzip.cpp `wx-config --cxxflags --libs base` -lFuzzer and then executed passing it the corpus directory as parameter: $ ./a.out tests/fuzz/corpus/zip This will be useful for finding more bugs like #17947 (and, indeed, running it locally already found another assert failure, which will be fixed soon). --- tests/fuzz/corpus/zip/doc.zip | Bin 0 -> 5468 bytes tests/fuzz/corpus/zip/pages.zip | Bin 0 -> 62123 bytes tests/fuzz/corpus/zip/test.zip | Bin 0 -> 3292 bytes tests/fuzz/zip.cpp | 49 ++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 tests/fuzz/corpus/zip/doc.zip create mode 100644 tests/fuzz/corpus/zip/pages.zip create mode 100644 tests/fuzz/corpus/zip/test.zip create mode 100644 tests/fuzz/zip.cpp diff --git a/tests/fuzz/corpus/zip/doc.zip b/tests/fuzz/corpus/zip/doc.zip new file mode 100644 index 0000000000000000000000000000000000000000..f907771079285737de6408286b75f67b158b3b3f GIT binary patch literal 5468 zcmcJT2{e>%+rY=3UAAJxC?aIfR$Kqz9C&lh?sN;whR%P`v0kd&y<=U;sg)k|^`m zltV3*g-gNZjw~khzf;i`Glr`Dk>vQMw^m@^k#WpxWoI2g_7Jv zyNdOmEA(dXOo?7i8*vM9t_S*)1ia+gz8}AyJs*+$MDqgvVqdmUS%bi0_~y;&{qWl? zWoYe1+pm^p%C@1!ujKF0JVsWkFyPg<`gZ8Q7F!EwoTNq1j*4Z6i&{?aULS54LY6%HJQg zW0Y+ipIG>Y-6b+WQYLQv47<^mgAiYOsOraQ<$B{BM~UeVS~I72<+ZOzpLiVN?rwju zFXoO(yzg19KsdGxO_1+jKhLUgC70>o*-Nk6bGn!*iH7V#ke>!y61` zqeiu0Mn;SV&(BrO`0BHzu#O>=--~^@>a^p~l~(s=>r;v=uXcgqes!}X<39VQG;cRk zXH5{e&)K%`*MLf1SDTufvPU?Phchk9g~+^co4%oSk3CtO6i%>>zYztUJ7ZgGZ=b95 z`d_wGEltHbam?4pMTWP^OuUB5#LQkity{#gOAjdxn6&mEq?R)+v3rKd_ot>@e{JYP z0{1+(TvlIHqrm`hoAf9a=-y?qz)9yCN2+MxW5 z*WaQ1c{WXUf9^aPS`!FcGh4P7eFuHx8vUix!oHXK?MvBi!^>9GWnh<1^=+2Vbp$p^ zmYyCjTdcPsKO$L67wt-(x4URkUG;j|1xExC*~P_-Myx*Xu3}W`u=T%2gW61mKi==p z4SL|-#Z9^|JQl*>i_6!IrsEkU3o-bzes01k&D-mOWYSP7cEN9kL{@6(ugq6IPU5)} zYi^AX0#i|U(^g+|j~FW%=l9WU<@vRDuT^tmzBs-{)-869E+=&&L=7A6P{4@83}xCQ zmx4(@mPZ8!v!fL`RW(&IngfHmKW>?ekXdz(zc=*7P@Z`v&&om-3~ z;EpQz$Q_5(qE?W|SL-V>xE2s9RtZ<(7UF-)!&64!+)8?4+>^Y|sJMIE9Z72F^ssXH zoVJVTGMkXBazwJgU&*XBhQqQ_6Fz~56>77>S8^Q1B8!w8G;p=f#^Cb2;c87Bkm8DvyPs)XS_)Qb4NsFi@{)&3V2@L>)W=P7zR zx0x%c``6s9g)k$73}7HCX-dc}hGl0I9gcsTtr-}~#C zZN!H{9@#G5hD;XeVtrrqZ+#mXZa`I2GxBEV-0j^Ud3a-7M|QODfbo0pG9Agc_%PdD z)6bYLxOEwA=FmiB%>mNyv_i$ehx$B#!aK(bh5uHl=FrGb7K~NeC(2=RPgrbu-+|EK z(ip_k&_OpvvZ~p<7s=A{U^(=)C#4RFku%*ZVbMqHKN*JwEZhF)#*+&Q0p(eDWTX~@=@y>}6R*uvc=PSJY zNY{$$?QJk`oXmWxQ;c_i46HCA#cj1gPD=k2Tx#vD;<0@#+eg^%suO#X)0A1w+A;2I7CI zSKpASe*5H>iJ4B)6a@Y(JlAByRezG~94lo3v0F3O)+L=FoM*Ass>7pEMRT&rm~&<5 zOM~}y@f_~wWktc6#VBxb2+d%MWe+HcUI!%8D5O9-RlYVGz=E3U613|Sy;nTMdW066 zv6e-CGpmNxSR9AIeGSW>`VPhi{7oDz*^<({b&gzA4mZKdBk;{nhbtt%zSzBsfbkb6 zGa(4a-ko=hr&by2~iMSTz($3OfA}5a4h99$4q{x`>?9EJRayda8?IedJdCa-zAKT?6k$x9yr@zzC zSxZu6+!+=Y16tc)?^W?kZZGTJhM5pEG$It;2q)?)-pn;>`fQ@;q}i{f&Be>N zLhiX@8y0(()50XR#Hk-_l;J!Nz7Fm_*w1dEy1)PGlc<)fFIQM>RL^zs~3P_B(VzgFg4PlQvI zMNWj#kLLTfjch@Pt9ItMK8qXOQz{gO%w?HpF)_sW=*ilF*x@~gRp zxnA{VEVnHo&rly`g-8iyq_bl>sM_#*UPhhoxX)E6#AU5Dv`PK5MTxc{V zJ*vE!J~g>1yJMzf^!e=ytVetsS?bH7ii>{f>`Bchpt_JQMpEy@5MF*!h(0Xp-o;rO zD@ULCu>i~4WGjZ82n~$vX0qb#>EbjcONuv@^7l=rWHy%=45LeCE5D=CxXcM^R~w>0 z$xX&V8I1M0c+!pw^+nn&zwmJInhrJjNrHKI4xkMI?BwL+^@z^zDbrFfe^OfF_|K@* zD-aUe6JFA|2bw1)jBFyCVG?8p(=*w9p&ASmM?W1iYV_#E_$xQL zLNC;KLCc$q^+#M#YV(RrwQ@!`q( zF>}Rj9_S&%g8q45mtE0^kHj~j1M`~!-mzP*s{P`_EK!wh8?KA7ZQ=~u74o^H&ZY~9 zslkV)HImbv?uS#~baWHATd>y-4?0VizN&TdIH;eE3#eb;toMkE>lO)AKRY3r1@@@e??!U(`lL zF-?a;OokpwnrTbD|HJFT~EmPZ)*^b>X3yX-6S+%iiMs>ufMk!q}ooFis%F>_eBZk?ZgH}`}-%#5Fu!! zy#oAaA%S8c&s&2Dh!Vx0mYCkN)AKBUB&{D7)F3l$jf_HH=$B)rfirGD=w@)ui8jGJ?+^k|UcY%+Mj*XGBv8+Us_<33(>-T&F>cTf> zw-<~LO5GH9Lt=?sCRvJ>_RGaQy)RTnqtrd`VY1?<;IP|ZGAv7C)}hj%$51>Hsr#-7 zeLAKJ0F#DsRI%HD!8*VsDKJ_(ID0^y&5xt%zlr=`B{T8=v<_+Lz?BT|i{N5RjEV3! z$?3I@_}9fpcx-B3RDrqn#BoZ$&L??3-psUhmVkE(Y&pPpib5XTw_jesL?Xv>{FK z-B&E!1C`k{XaTGQGN~t$oRV@~P)OkSn!~}R1^ws4AwUuc2Lw49fX_ciMH+WcLuZdt zj(++#Lg21zWcN}M_v-S2d^&O~401A-dc@{cbBOgOfz~R(y$lCEF^ru?$ z7%~Df=HHOnN$BYK?`(y13{8;y8?rqK{iy&rf+$A`weL$4Jmm5eRVCtj0 Fe*rp0@L&J{ literal 0 HcmV?d00001 diff --git a/tests/fuzz/corpus/zip/pages.zip b/tests/fuzz/corpus/zip/pages.zip new file mode 100644 index 0000000000000000000000000000000000000000..f70ded12b5c613fae7f7d649f2f4ef9f67a93e6a GIT binary patch literal 62123 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%0DMyXSd;H2zsuZeA;PHVgN4mSzOGn0 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 Y4*(@uNT~m08|wQ=`A$CQ?SJn62LeMZp#T5? literal 0 HcmV?d00001 diff --git a/tests/fuzz/corpus/zip/test.zip b/tests/fuzz/corpus/zip/test.zip new file mode 100644 index 0000000000000000000000000000000000000000..947cc40d2b444aa6e75e17ec232f07126c298b1f GIT binary patch literal 3292 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 GfBywQjs<-H literal 0 HcmV?d00001 diff --git a/tests/fuzz/zip.cpp b/tests/fuzz/zip.cpp new file mode 100644 index 0000000000..0f146da11f --- /dev/null +++ b/tests/fuzz/zip.cpp @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: tests/fuzz/zip.cpp +// Purpose: ZIP archives reading code fuzzing test +// Author: Vadim Zeitlin +// Created: 2017-10-24 +// Copyright: (c) 2017 Vadim Zeitlin +/////////////////////////////////////////////////////////////////////////////// + +#include "wx/log.h" +#include "wx/mstream.h" +#include "wx/zipstrm.h" + +#if wxDEBUG_LEVEL + +static void exitAssertHandler(const wxString& file, + int line, + const wxString& func, + const wxString& cond, + const wxString& msg); + +static volatile wxAssertHandler_t + origAssertHandler = wxSetAssertHandler(exitAssertHandler); + +static void exitAssertHandler(const wxString& file, + int line, + const wxString& func, + const wxString& cond, + const wxString& msg) +{ + origAssertHandler(file, line, func, cond, msg); + + exit(1); +} + +#endif // wxDEBUG_LEVEL + +extern "C" int LLVMFuzzerTestOneInput(const wxUint8 *data, size_t size) +{ + wxLogNull noLog; + + wxMemoryInputStream mis(data, size); + wxZipInputStream zis(mis); + while ( wxZipEntry* const ze = zis.GetNextEntry() ) { + zis.OpenEntry(*ze); + delete ze; + } + + return 0; +}