diff --git a/fuzz/corpus/0194b4d1a6f8e1d46d663dd10e4f1180c60adc5c-6 b/fuzz/corpus/0194b4d1a6f8e1d46d663dd10e4f1180c60adc5c-6 new file mode 100644 index 0000000..41b7a0e Binary files /dev/null and b/fuzz/corpus/0194b4d1a6f8e1d46d663dd10e4f1180c60adc5c-6 differ diff --git a/fuzz/corpus/01a10a2454580e04ba95d3b79515b01670d7f6f2 b/fuzz/corpus/01a10a2454580e04ba95d3b79515b01670d7f6f2 new file mode 100644 index 0000000..9c8f947 --- /dev/null +++ b/fuzz/corpus/01a10a2454580e04ba95d3b79515b01670d7f6f2 @@ -0,0 +1,11 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_add_end_noeol.src b/gitdiff/testdata/apply/text_fragment_add_end_noeol.src +--- a/gitdiff/testdata/apply/text_fragment_add_end_noeol.src ++++ b/gitdiff/testdata/apply/text_fragment_add_end_noeol.src +@@ -1,3 +1,5 @@ + + +- +\ d of file ++ ++ ++ diff --git a/fuzz/corpus/01fed6895210ef34892919b54e8124cd2525f2da-3 b/fuzz/corpus/01fed6895210ef34892919b54e8124cd2525f2da-3 new file mode 100644 index 0000000..2b1a09e --- /dev/null +++ b/fuzz/corpus/01fed6895210ef34892919b54e8124cd2525f2da-3 @@ -0,0 +1 @@ +diff --git "" \ No newline at end of file diff --git a/fuzz/corpus/026a328107a3bfeb589c51d33ca5ecb6063e48da-1 b/fuzz/corpus/026a328107a3bfeb589c51d33ca5ecb6063e48da-1 new file mode 100644 index 0000000..0de12b1 --- /dev/null +++ b/fuzz/corpus/026a328107a3bfeb589c51d33ca5ecb6063e48da-1 @@ -0,0 +1,7 @@ +--- /f/a/y/t/ ++++ /f/a/y/ +@@ -1,3 +1,4 @@ ++ + + + \ No newline at end of file diff --git a/fuzz/corpus/02e6fdb4b98d7bb463678e52ceae65996cb4b4b3-1 b/fuzz/corpus/02e6fdb4b98d7bb463678e52ceae65996cb4b4b3-1 new file mode 100644 index 0000000..2dee407 --- /dev/null +++ b/fuzz/corpus/02e6fdb4b98d7bb463678e52ceae65996cb4b4b3-1 @@ -0,0 +1,2 @@ +diff --git +copy to \ No newline at end of file diff --git a/fuzz/corpus/0549be1ec3f871e2b9c454b05b608fda6bc7f736-1 b/fuzz/corpus/0549be1ec3f871e2b9c454b05b608fda6bc7f736-1 new file mode 100644 index 0000000..eb9712e --- /dev/null +++ b/fuzz/corpus/0549be1ec3f871e2b9c454b05b608fda6bc7f736-1 @@ -0,0 +1,4 @@ +--- c ++++ c +@@ -1,4 +1 @@ +- \ No newline at end of file diff --git a/fuzz/corpus/060e807e89667fb4acfdf0c341e97596ca6786f8-7 b/fuzz/corpus/060e807e89667fb4acfdf0c341e97596ca6786f8-7 new file mode 100644 index 0000000..381374b --- /dev/null +++ b/fuzz/corpus/060e807e89667fb4acfdf0c341e97596ca6786f8-7 @@ -0,0 +1 @@ +diff --git "\"\ \ No newline at end of file diff --git a/fuzz/corpus/068b76e69391f580a67c360aaea493956fdec4e5-3 b/fuzz/corpus/068b76e69391f580a67c360aaea493956fdec4e5-3 new file mode 100644 index 0000000..7c8cab5 --- /dev/null +++ b/fuzz/corpus/068b76e69391f580a67c360aaea493956fdec4e5-3 @@ -0,0 +1,103 @@ + + + + + + +@@ - + + + + + + + + + + + + + + + +@@ - + + + + + + + + + + + + +@@ - + + + + + + + +@@ - + + + + + + + + + + + + + + + +@@ - + + + + + + + + + + + + +@@ - + + + + + + + + + + +@@ - + + + + + + + + + + + + + + + +@@ - +@@ - +@@ - +@@ -1612 +161 @@ \ No newline at end of file diff --git a/fuzz/corpus/06ccb5d55505f1fdd7e55dbcc63186dafc3147d5 b/fuzz/corpus/06ccb5d55505f1fdd7e55dbcc63186dafc3147d5 new file mode 100644 index 0000000..e09ee03 --- /dev/null +++ b/fuzz/corpus/06ccb5d55505f1fdd7e55dbcc63186dafc3147d5 @@ -0,0 +1,5 @@ +diff --git /gitdiff/testdata/apply/bin_fragment_delta_error.src /gitdiff/testdata/apply/bin_fragment_delta_error.src +GIT binary patch +delta 1 +Xc${UtY+{O?z`_4As|XMP0RR6K8UwQc + diff --git a/fuzz/corpus/073aafdca0dd6846bf0dc6d65556b41b8442742e-9 b/fuzz/corpus/073aafdca0dd6846bf0dc6d65556b41b8442742e-9 new file mode 100644 index 0000000..7db539b --- /dev/null +++ b/fuzz/corpus/073aafdca0dd6846bf0dc6d65556b41b8442742e-9 @@ -0,0 +1,7 @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ diff --git a/fuzz/corpus/07e877d9e20151f823bbb8fc79bb699025b2fd7f-2 b/fuzz/corpus/07e877d9e20151f823bbb8fc79bb699025b2fd7f-2 new file mode 100644 index 0000000..26ef985 --- /dev/null +++ b/fuzz/corpus/07e877d9e20151f823bbb8fc79bb699025b2fd7f-2 @@ -0,0 +1,29 @@ +--- t ++++ t +@@ -3,6 +3,8 @@ + +- +- + ++ ++ ++ + + ++ +--- t ++++ t +@@ -3,6 +3,8 @@ + +- +- + ++ ++ ++ + + ++ +--- t ++++ t +@@ -,6 +3,8 \ No newline at end of file diff --git a/fuzz/corpus/07ea4ec7eb157c555dc2eef35b03053fe894c99c b/fuzz/corpus/07ea4ec7eb157c555dc2eef35b03053fe894c99c new file mode 100644 index 0000000..a647f06 --- /dev/null +++ b/fuzz/corpus/07ea4ec7eb157c555dc2eef35b03053fe894c99c @@ -0,0 +1,8 @@ +diff --git /gitdiff/testdata/apply/bin_fragment_literal_modify.src /gitdiff/testdata/apply/bin_fragment_literal_modify.src +GIT binary patch +literal 32 +ocmZQzU`lR_IpTEvL*`JUiBtu5JCY +zqz)g`N&ViW9W6D7kX7GX{y{m=JvFi1-r`PEE?SE&^2StK}qz5hC +zom0ywdCWuNb#YXdd0%FMNHft!FTER$>uzu5gxdoGBy789raJBW7jAhN2TWFL{P%2l +z|AX{}Jz8U}Y*X|~=?4<;F4)94!-e?w)#D0h8n1_ORWNCOC&7=!U0MP3BI0~M)pZ-cf6aFkVFzO&JOkcv7FeEq|)DcBDAP&_&ZgBk* +zVp(I^5-bN3L{~g{bHnkWX%0Hj02~njkKX8Zz%Ih#=LBD%Pk%TkW4ize_HweE#@_-2 +zvpyE#e@^n#rRGx;O84LB3bMdrxdv%Gkc)ZQq%8pkxT9b*)}Z&t5bibZ0)8H8T33vN +zgTj)j_%wz13x+TZ6LgdupD^ke2!n7E-YZ%8n3OTzK5*T(BH>ltfU|QJ7VTAur}ah?0sC%ZUY?&xwkEUw@Y9LqO1~eF>>5cDlg_YxuF| +zZ58JVlu7IBfP1@TDmG;<{X>(&*HyC-7zqRrY~#3W>hP8@a&jwYi_$k(j`D$Ta97 +z{(rL4B7Ysa#+5QC40p?w_V}r&G%{W$)8R1P`wet5K>`4D&EanFW{d2mOBvm~hJviTXh@a)Qp^TpF9X}vEVN-{LA%5Xp^*>%23c&{6HgPH4ahb@257yLNuno+(_9IJ!cgw97b*@K~X-9f8rdsd` +zOSj362)!mBsX%A +zQ*StV4WzVHG#+*IwPf7@BwNAUN{Tre0&7KHK8Gq6W2Jeqe%S(>+{1HM$cFn>J%6m& +z|8$kpBb=Dxh6$MwDCzl1g;Y`~f7F-wEny-#iI1X?l(D;Z$PLR3jay0@l4S5PR8fS< +zi+>Hek8mDV9ItDt3}cF;v-yN79ZUwT1^LyF1n$Cy%gt_C&r9r*A*)&$ZFlHnVf=mg#Q%sK{dyD8$2z{ndd#G^c?_~0mb!M$7ZxU$373E=vV}GR5OrWDm +zBsRhxx$#Ql_U#b2h}uPg{qm53MhlGO!F^=m@8@Ie88^`%?=q2+>^o91FPtaKgX{mUR_AEr9NwT^_^@8>UHx +z6Vql9ovz7$NpnPl5QlqsKP0|}EskXfTz-@ZpBlsI-~?B-4%w_GY9s9?ln=!A8wNMf +z=;eAIwp6&0nZ9Qq({C*2AXxKEGCjGa)2K^@ryP2!6dWiRy0M0vL*145f@BzR +z`IXs~3pGOq&;GIFDC=$JbDmK$C`A~nS$@*@hY$2e@kN0E;7jK@*TzW0 +z2FmwjqM0G-dfMDB3x5@pycb${TTJ7dzu+teFC9mUiSr(jrvQ~;sj`>uoen9{iXP5; +zbF9`-K065Zx&Tv2gK4wf8(U++M31oGlTiV$(^)qux97HP~_mSNPtqZA#7xOo;Q +zc-B?N(jYE1ix_L{M|cpCS4s5I3Tx_Hh1#!O-iBP5iS>iM{C~ZUez^pglqH5IAdOAD +zE;AjwjL)_IsQU6y4t4Uc9KXl~!BYeA;B8*wK)|cg^tiD0aN2iWzR>YnUUS9?3jKhiAKpgQ0 +zCRNTKwkeO~{pU2|S8)UYp21g#5$lGV|mN +zdQNSkH%R6}>C_cemrZCjR|-)D<8Y^P74a}>FKs&95{8d9SiTvhB4{eTUGFbTa-IbX +z8Lw1xoPPp_ZdIbl#dCzP1`N@V?eb7SizWtmm5ujG(rKZHZw$>Ozzf4E=Yf*+eH}kn +zL{&n><${iESA&t~5pz;&vs%HlLYxXMjPlLH{?*-#T4#$(P;pke+8K*f)n*Ph>SB9|8)|f;w=%OP6`nms +zdFVyjJf#&^=o+P_Y1Q{$$Aql8VqX+>=4)lx*&wB#{$tlb&SwC3E~G-pKOFXRQrRSk +zMt}Fa|4IQc;^N}stu@1BVjk>`8grvj#WVz9k#>7N?#JQZdag9deih!2aWVB}1klbo +zXKhuKy*h7m?``T}aM*}PexaGXqeZCm>ME7BQi64D>9lL0AoF2`Tzo^hNSMC9B=jT@ +zjA%viojl=gm6?1mPDg-)fy98Cb}Bdio_{dD+i;%nIJ6ZfQ^LPvl@~R#wk@K-##0ma +zj|D(^Fr8U(o(FRy$Z0FGyp@Yam&`H8oVv>6n8UKEVec>#*NVp)YrdOPgay4SxQ!PjT#gf^PISz?!W;(=9W +zC3sT|H>d}ErTr;c8LY_P{IPZ;Wq&_a4mM`dLu +zn^@7N(YC~q-qV~usbu?>{mD#~LNHhWdnNcaB&J>J@M)=+i^{*SwmS-XE-ywoYoZ3U +zdb4|M(!Ok$LY!K2m*Wjy>w_)zTm#k_g&J$VCb%~Wdvc^;lfge`vp1dg{O^Aqhg$$l5i=+C+Ser`KQQfEhZr}z4>;>#SGZZ*qGHd~H-az)BPnlSx{cgt);r6Mgt;@-+9-E2t@FXz( +zkh$)!g3>JMRK2Fj;(t$e?z7fJ;>m@#_j;z{x_|Hzf&NnB2s)A$gs4~;$GCPhUTy3P +z%V#3D9@E1QNOb5UL}Ny_3_nU3V+}u&a}K`lA2AVv-@33!d)C9C2b%Dl#4Wp`G3Y#VXS2vODOK +zH6Ik?Qx|Shj(@mOGi-V8X@6z3u=_{}wqW)r%+?8?joDa^!2`v;{CIT;J4sydrLxNW +zgUBvqK&gHOJyAP#hP2e3p;XKF@8~4;2})IVed0tk&>;1X$v5<9B1$g>xX)iE=u55Vhuq!Be_Zh7H_L0ojmJ-L7F +zFE;pV4HH_WmO_~*TJ#EHu@A`M)iV-3k0!7^nIQ%08mJA-{<~wkIj0>_AP%Vz_4#<* +vVkRz)@E~iIs*PG)1#O3 +z^y`3>TH+sKUrDep!F5A*^DLBShsp6!+cwX9)&)8gv+|D%3&Z;I1%KSpdiN0>xk9!c +zDy`)OH&-h44JMjA=aom~2^DT%XWWk@BGsF>T2qX9tzqChzyU07Q5O!7pHe8DLN|bp +zdlTM)yHOJqRKS{Ok~8#6aa|1~wdC!f6HE-YeYg|0WDJ@d5_mH_Xk7QkFCJ);Ovbo( +zM*o?Jc;mjWG9!T2#lADbM8kdZGB*L;W@^4gw!CX?raCf7DLTZhN{Ky@jK1r2x?YmoKqE|=?ny{_>M +zPW`hAEW;McTgizc-%KZOZ(LC{iJ26YFd!W@TJ{Cm#XaWxI)6edCQgN9H-J&#etfq2BL8u2mpTqV;-qg8O*hlGo~w*^QU&D8~wh* +zjRoXGhq}{c%8{%P7XC3-Gtv_4vPhC&G({}4=soxR<|OO8=U32O6B6X4cu}vawOLA8 +zUCsnRtC7@}bbt5OjoNEaRt9SW579M@O#ke{I?9P!pHGx8+mS!>XB(pRy3MCefz~7F +zw>%NX4brs~1S)zzfOF(+Ek>{e>P?F^u#}8;o=P;Q#CD^EyGpfE6zisF&7Wp0@PM#uQ8l(zm +zP$=UTG!hf$iSFO~fxdOLf78q%Z-e$nFbWUzJ1GphTCI4>g(9IgBR5F8ark@QBWdEc +z#zwo4Yk#W3G2@1tNzg@lLP}&U1pA#O7MZO99tC&}9^@dg>AOG&wsG)`L6)m8D^F-bi%B9Fk!}EJ;7-NTD*1)VJblm%?L@A$yiNR_ +zN*tPjf$n}UNI)oYV<>TQzBo6=Js6=KI%9xd0e}BZ7R)GU!se_DK2rXrAU6Li*}JNk +z#OhSK^H=?bSi&TwvW+tB(6HGW@aslSEso+M=;CSx(a|*2cpNSek=YCt0xna?)V|}{ +zTrlxT(K!Y~T&oi%3ZE#@!{L<{lsr)-9)*xnPKtF8N_ai2o#MZ0IBC!gL$Qsp6Z +z8Gn6s&gnB+R1tMMtKG)p(&tf2mQR=p-i$vp0Miv<=k6$|Zzncr&mA(7R@^rLWDs=I +zYQH*agSALP4X>gKE|9hMvV&2kw^AvZ!faW}gmNmbaQYn9l7n@!u{?2sM8nv;Tmv{O +zBGR5{oW=M)QBwCHaH^{#iZy8#xtUkH+J6it`5)T}v?(oj_fcQINt+8O%OF`^vYP4)mg#jyW+dip{0)NO!-BTlR_?Vq;{U272sSWrCqIVm8cQL +zrQmZDOJ2`L8Ma$4xNjy5tYTIfMP$0Cem%%TLvRcw`DGcD@_|S%DDQ4u3UK +z8OEd2toTA8!T^Fm!2&_{Jf5ZMEi=opVlV!Ik +z<##3|qPvm^@~emp!AcWqZnh=Kjei*4uG>XNb8+}}YQ^1W{{z9%$|}v5_lcs>dBQ)!1^xT1u+L5lB_@cL=1D~x9Wuz +zxNt@}3^A_ZoI>X}!Mx*>E&MhCXYogWFhGnpZyeU!If!?eQb$yAbIIg><^*Non_1wm3-B0LADTnL +z@Hcy)r!Y%8x7clRE|bsgq9dRISAT07rTRBH&nUUbh`5p}Mb34r|9T->C}v-0X5Ec}{F9eQ~ +zhpvHGyil+IHRzd!=^rDs{FlTe*YP3?X>tO`A|pa&VSnR#Teu~TOBJYPw~MpSAuLU& +zyl44lEnDGx9xOCB98{3a*(->ajsd_h%GmzCJno?Q&Pk&<XzvfiOofjV7KjkT8RO)tQL0)FS;%Xt5w2$x+^;B_k^yfQRtHC!ndJ& +z&$LQY(4EC(dem!kO3UB}z~JrL$`X9Qg4CLqd7*@Hn2yxVThL!~BW +za6(zTA3VB62Y($=87Nd(yuJH&{z_$9;Eo)VO3Rv;-+gC34F02W_29+|Br6D$(fQ&u +z--#+MO#x4xiRrjERDA?xBfD@AaPlspDCD~m)QT=JS6a}X`|BZPaBeJ2pzNE=Uv-7K +zn1=v3M4?6-!r&5zU^ey=zQ|mJwNTM3ynPRaeEP2%Ab&NAz23L!+3J78>DNz@ +zcRGVQ{T78^a%8e;7hmY!<1!>F%P3kh+(XpJvYZi2+_KJ{TpjXm2?SpLtC$kZ^u(dN +zk6GUPl;ciEb+#wFOVmH>IJ*$ACbE1kae%lKRxO7TlRgGD&%hdcWBJ_hl&X@eH`oP+ +zEE(=8aL=VamW$>w$<-v#=-Gn(S+ +z3;|DiLStTzl)8WRlm|&b);zFN)QobrszD9rwkLNNY*MK+{OAn&2FY03tEpf5Jpj54Gk>^{cy&yUeV3R*pRs^>fqgveU|_5X +zX+e%27qs2?7c(6BMHwnKprk+Z!)v4I=V4BAvdR#Lu7_d4gJ5#jsXEF%=!5*qv7*_k +zM%5WM$*Vou!Y7D@*jCa6 +zYHwni68{B(ythcY+j4tKR&BK~wpq+p_I^Ee5*>UjeSbn=Z@M{3)IDB1h`wTBv8Vf) +zGUabKI^vx;3Bt3)O=|zXZF^CRCWGFRoqrAlxT0y&$j5q6SnOOU5o0?&Ps&D6Ph}`# +zwY!d(eP-j3KN_5`jU!b3rM~A)_kI~RXoFy;RSw!9pX9GG#B*F)`BST~98N+GqC9J7 +zyK!;S%6g@oNzmD1wzp`{WZzW@_X`T-&+vR;$j+YidW6`>)~^xl)>6cuUrT~*Lu`sa +ztO}<9;#H(Q==8o5Tl}2UX=uGs%2mo19NqD{5U5NNDyo1Rz+mR`!bH$50%+yM7He^f +zdBH00TyclwDiI=}Q>9_P*rcl2Xnz%4ZX#_#&l$m~RIyIW^MA=hnUPFr%4bUq`Q(Rz +zpGTKslcC%{fbRe!3oa<}4EKVhQ%zS`J2GeEVr+blZ0VAxrNnYnS|C25Uov}{GHoRv +zfFHfa&Jwlv(G^#}8A+}RLJN4n=M4UA|@AT(`^>Fu_AKhK^yT$XPA9`v4eB_FD$ie0HD3Mi4;`s$hx2m9!(i8H!RzGg?C)?9Pb`H(UMj +z<8h|0U)ScABl{{?sOhBJJ+yFPUOt7$z&nj*C(+UXB1_UZbG@s_K&)51_vPKxQ4~mI +zVsBl7$^wYH(tS=4B*eHGsefF8JLWa`(eLnE!hn1l1gzVr56RAj0G_?aY8PsdnewAx +zZT0?fpiS{s0Aw+t2$UUQ8M-rW={ko_;sJpjJ1cye3c$(VR4{`2w#4pbFy+`(TlH;+ +zsRJ^EQ{%@!-i8GRBqYoy6jIyiS8YC#b<%d)^wC2C>^bvFCR##kmw%eyk5ClDOBLPk +z?ZY@ePP8_qq>U*{?_kesZmky4-_cLmu?|B2);KDCQ?spBIJE?6j8`9&{>UoVIRUPw +zrx_TuibGY$dcSSH{d>KOqk_s$i=X_v>|dz1MMzQ0CJX+$*Y(PaiAhNRl8^?%L6tN! +zoCVZZRG(i1T9lcmLVv7ZE)U68M1}eqD2QeQo3F+z`_kj^3BAQ~kifx^iJVoht|)uQ +zp@Zi4b(sUN|HikW5)IF|`VA(5R}Oig)4g3o@Edr6G~IUUj9NaSza}p$jk_pOfzO2r +z`Uq<(Z;%5A7DwJe@~J%KO>wC&&NuCjN8iAHC?0eTu|CfS+kf-2P)BX2mNxYJOt)<# +zud7R9Is%@q9H$%no|irWi2&HJ00Qekek!<&=4kke7cKnH-x$$Mg_!j+R4)~S@4-7 +zr5;gyzbMDhd4E#B$j(G@-z05T!$YZ=j)t^KKgHs!H_s_|8VC%~m+HAY-YK*Nx44gH +zaUG54Wez*M!YaxNS#)BjN)7?2M!A3NOY99Oa}Rb;C#RPNionqlK3@N0PTt)Op#&Rj>ipw!qDZki{+-V5CQD(Yj^-6 + diff --git a/fuzz/corpus/0fe514c6abe71a75caac62aa025dcab3e87e277a-1 b/fuzz/corpus/0fe514c6abe71a75caac62aa025dcab3e87e277a-1 new file mode 100644 index 0000000..ca667c1 --- /dev/null +++ b/fuzz/corpus/0fe514c6abe71a75caac62aa025dcab3e87e277a-1 @@ -0,0 +1,5 @@ +diff --git /dir/ten.bin /dir/ten.bin +GIT binary patch +literal 0 +gcmXQzU|?i`U?w2V48*KJ%mKu_Ir9NxNJCY +zqz)g`N&ViW9W6D7kX7GX{y{m=JvFi1-r`PEE?SE&^2StK}qz5hC +zom0ywdCWuNb#YXdd0%FMNHft!FTER$>uzu5gxdoGBy789raJBW7jAhN2TWFL{P%2l +z|AX{}Jz8U}Y*X|~=?4<;F4)94!-e?w)#D0h8n1_ORWNCOC&7=!U0MP3BI0~M)pZ-cf6aFkVFzO&JOkcv7FeEq|)DcBDAP&_&ZgBk* +zVp(I^5-bN3L{~g{bHnkWX%0Hj02~njkKX8Zz%Ih#=LBD%Pk%TkW4ize_HweE#@_-2 +zvpyE#e@^n#rRGx;O84LB3bMdrxdv%Gkc)ZQq%8pkxT9b*)}Z&t5bibZ0)8H8T33vN +zgTj)j_%wz13x+TZ6LgdupD^ke2!n7E-YZ%8n3OTzK5*T(BH>ltfU|QJ7VTAur}ah?0sC%ZUY?&xwkEUw@Y9LqO1~eF>>5cDlg_YxuF| +zZ58JVlu7IBfP1@TDmG;<{X>(&*HyC-7zqRrY~#3W>hP8@a&jwYi_$k(j`D$Ta97 +z{(rL4B7Ysa#+5QC40p?w_V}r&G%{W$)8R1P`wet5K>`4D&EanFW{d2mOBvm~hJviTXh@a)Qp^TpF9X}vEVN-{LA%5Xp^*>%23c&{6HgPH4ahb@257yLNuno+(_9IJ!cgw97b*@K~X-9f8rdsd` +zOSj362)!mBsX%A +zQ*StV4WzVHG#+*IwPf7@BwNAUN{Tre0&7KHK8Gq6W2Jeqe%S(>+{1HM$cFn>J%6m& +z|8$kpBb=Dxh6$MwDCzl1g;Y`~f7F-wEny-#iI1X?l(D;Z$PLR3jay0@l4S5PR8fS< +zi+>Hek8mDV9ItDt3}cF;v-yN79ZUwT1^LyF1n$Cy%gt_C&r9r*A*)&$ZFlHnVf=mg#Q%sK{dyD8$2z{ndd#G^c?_~0mb!M$7ZxU$373E=vV}GR5OrWDm +zBsRhxx$#Ql_U#b2h}uPg{qm53MhlGO!F^=m@8@Ie88^`%?=q2+>^o91FPtaKgX{mUR_AEr9NwT^_^@8>UHx +z6Vql9ovz7$NpnPl5QlqsKP0|}EskXfTz-@ZpBlsI-~?B-4%w_GY9s9?ln=!A8wNMf +z=;eAIwp6&0nZ9Qq({C*2AXxKEGCjGa)2K^@ryP2!6dWiRy0M0vL*145f@BzR +z`IXs~3pGOq&;GIFDC=$JbDmK$C`A~nS$@*@hY$2e@kN0E;7jK@*TzW0 +z2FmwjqM0G-dfMDB3x5@pycb${TTJ7dzu+teFC9mUiSr(jrvQ~;sj`>uoen9{iXP5; +zbF9`-K065Zx&Tv2gK4wf8(U++M31oGlTiV$(^)qux97HP~_mSNPtqZA#7xOo;Q +zc-B?N(jYE1ix_L{M|cpCS4s5I3Tx_Hh1#!O-iBP5iS>iM{C~ZUez^pglqH5IAdOAD +zE;AjwjL)_IsQU6y4t4Uc9KXl~!BYeA;B8*wK)|cg^tiD0aN2iWzR>YnUUS9?3jKhiAKpgQ0 +zCRNTKwkeO~{pU2|S8)UYp21g#5$lGV|mN +zdQNSkH%R6}>C_cemrZCjR|-)D<8Y^P74a}>FKs&95{8d9SiTvhB4{eTUGFbTa-IbX +z8Lw1xoPPp_ZdIbl#dCzP1`N@V?eb7SizWtmm5ujG(rKZHZw$>Ozzf4E=Yf*+eH}kn +zL{&n><${iESA&t~5pz;&vs%HlLYxXMjPlLH{?*-#T4#$(P;pke+8K*f)n*Ph>SB9|8)|f;w=%OP6`nms +zdFVyjJf#&^=o+P_Y1Q{$$Aql8VqX+>=4)lx*&wB#{$tlb&SwC3E~G-pKOFXRQrRSk +zMt}Fa|4IQc;^N}stu@1BVjk>`8grvj#WVz9k#>7N?#JQZdag9deih!2aWVB}1klbo +zXKhuKy*h7m?``T}aM*}PexaGXqeZCm>ME7BQi64D>9lL0AoF2`Tzo^hNSMC9B=jT@ +zjA%viojl=gm6?1mPDg-)fy98Cb}Bdio_{dD+i;%nIJ6ZfQ^LPvl@~R#wk@K-##0ma +zj|D(^Fr8U(o(FRy$Z0FGyp@Yam&`H8oVv>6n8UKEVec>#*NVp)YrdOPgay4SxQ!PjT#gf^PISz?!W;(=9W +zC3sT|H>d}ErTr;c8LY_P{IPZ;Wq&_a4mM`dLu +zn^@7N(YC~q-qV~usbu?>{mD#~LNHhWdnNcaB&J>J@M)=+i^{*SwmS-XE-ywoYoZ3U +zdb4|M(!Ok$LY!K2m*Wjy>w_)zTm#k_g&J$VCb%~Wdvc^;lfge`vp1dg{O^Aqhg$$l5i=+C+Ser`KQQfEhZr}z4>;>#SGZZ*qGHd~H-az)BPnlSx{cgt);r6Mgt;@-+9-E2t@FXz( +zkh$)!g3>JMRK2Fj;(t$e?z7fJ;>m@#_j;z{x_|Hzf&NnB2s)A$gs4~;$GCPhUTy3P +z%V#3D9@E1QNOb5UL}Ny_3_nU3V+}u&a}K`lA2AVv-@33!d)C9C2b%Dl#4Wp`G3Y#VXS2vODOK +zH6Ik?Qx|Shj(@mOGi-V8X@6z3u=_{}wqW)r%+?8?joDa^!2`v;{CIT;J4sydrLxNW +zgUBvqK&gHOJyAP#hP2e3p;XKF@8~4;2})IVed0tk&>;1X$v5<9B1$g>xX)iE=u55Vhuq!Be_Zh7H_L0ojmJ-L7F +zFE;pV4HH_WmO_~*TJ#EHu@A`M)iV-3k0!7^nIQ%08mJA-{<~wkIj0>_AP%Vz_4#<* +vVkRz)@E~iIs*PG)1#O3 +z^y`3>TH+sKUrDep!F5A*^DLBShsp6!+cwX9)&)8gv+|D%3&Z;I1%KSpdiN0>xk9!c +zDy`)OH&-h44JMjA=aom~2^DT%XWWk@BGsF>T2qX9tzqChzyU07Q5O!7pHe8DLN|bp +zdlTM)yHOJqRKS{Ok~8#6aa|1~wdC!f6HE-YeYg|0WDJ@d5_mH_Xk7QkFCJ);Ovbo( +zM*o?Jc;mjWG9!T2#lADbM8kdZGB*L;W@^4gw!CX?raCf7DLTZhN{Ky@jK1r2x?YmoKqE|=?ny{_>M +zPW`hAEW;McTgizc-%KZOZ(LC{iJ26YFd!W@TJ{Cm#XaWxI)6edCQgN9H-J&#etfq2BL8u2mpTqV;-qg8O*hlGo~w*^QU&D8~wh* +zjRoXGhq}{c%8{%P7XC3-Gtv_4vPhC&G({}4=soxR<|OO8=U32O6B6X4cu}vawOLA8 +zUCsnRtC7@}bbt5OjoNEaRt9SW579M@O#ke{I?9P!pHGx8+mS!>XB(pRy3MCefz~7F +zw>%NX4brs~1S)zzfOF(+Ek>{e>P?F^u#}8;o=P;Q#CD^EyGpfE6zisF&7Wp0@PM#uQ8l(zm +zP$=UTG!hf$iSFO~fxdOLf78q%Z-e$nFbWUzJ1GphTCI4>g(9IgBR5F8ark@QBWdEc +z#zwo4Yk#W3G2@1tNzg@lLP}&U1pA#O7MZO99tC&}9^@dg>AOG&wsG)`L6)m8D^F-bi%B9Fk!}EJ;7-NTD*1)VJblm%?L@A$yiNR_ +zN*tPjf$n}UNI)oYV<>TQzBo6=Js6=KI%9xd0e}BZ7R)GU!se_DK2rXrAU6Li*}JNk +z#OhSK^H=?bSi&TwvW+tB(6HGW@aslSEso+M=;CSx(a|*2cpNSek=YCt0xna?)V|}{ +zTrlxT(K!Y~T&oi%3ZE#@!{L<{lsr)-9)*xnPKtF8N_ai2o#MZ0IBC!gL$Qsp6Z +z8Gn6s&gnB+R1tMMtKG)p(&tf2mQR=p-i$vp0Miv<=k6$|Zzncr&mA(7R@^rLWDs=I +zYQH*agSALP4X>gKE|9hMvV&2kw^AvZ!faW}gmNmbaQYn9l7n@!u{?2sM8nv;Tmv{O +zBGR5{oW=M)QBwCHaH^{#iZy8#xtUkH+J6it`5)T}v?(oj_fcQINt+8O%OF`^vYP4)mg#jyW+dip{0)NO!-BTlR_?Vq;{U272sSWrCqIVm8cQL +zrQmZDOJ2`L8Ma$4xNjy5tYTIfMP$0Cem%%TLvRcw`DGcD@_|S%DDQ4u3UK +z8OEd2toTA8!T^Fm!2&_{Jf5ZMEi=opVlV!Ik +z<##3|qPvm^@~emp!AcWqZnh=Kjei*4uG>XNb8+}}YQ^1W{{z9%$|}v5_lcs>dBQ)!1^xT1u+L5lB_@cL=1D~x9Wuz +zxNt@}3^A_ZoI>X}!Mx*>E&MhCXYogWFhGnpZyeU!If!?eQb$yAbIIg><^*Non_1wm3-B0LADTnL +z@Hcy)r!Y%8x7clRE|bsgq9dRISAT07rTRBH&nUUbh`5p}Mb34r|9T->C}v-0X5Ec}{F9eQ~ +zhpvHGyil+IHRzd!=^rDs{FlTe*YP3?X>tO`A|pa&VSnR#Teu~TOBJYPw~MpSAuLU& +zyl44lEnDGx9xOCB98{3a*(->ajsd_h%GmzCJno?Q&Pk&<XzvfiOofjV7KjkT8RO)tQL0)FS;%Xt5w2$x+^;B_k^yfQRtHC!ndJ& +z&$LQY(4EC(dem!kO3UB}z~JrL$`X9Qg4CLqd7*@Hn2yxVThL!~BW +za6(zTA3VB62Y($=87Nd(yuJH&{z_$9;Eo)VO3Rv;-+gC34F02W_29+|Br6D$(fQ&u +z--#+MO#x4xiRrjERDA?xBfD@AaPlspDCD~m)QT=JS6a}X`|BZPaBeJ2pzNE=Uv-7K +zn1=v3M4?6-!r&5zU^ey=zQ|mJwNTM3ynPRaeEP2%Ab&NAz23L!+3J78>DNz@ +zcRGVQ{T78^a%8e;7hmY!<1!>F%P3kh+(XpJvYZi2+_KJ{TpjXm2?SpLtC$kZ^u(dN +zk6GUPl;ciEb+#wFOVmH>IJ*$ACbE1kae%lKRxO7TlRgGD&%hdcWBJ_hl&X@eH`oP+ +zEE(=8aL=VamW$>w$<-v#=-Gn(S+ +z3;|DiLStTzl)8WRlm|&b);zFN)QobrszD9rwkLNNY*MK+{OAn&2FY03tEpf5Jpj54Gk>^{cy&yUeV3R*pRs^>fqgveU|_5X +zX+e%27qs2?7c(6BMHwnKprk+Z!)v4I=V4BAvdR#Lu7_d4gJ5#jsXEF%=!5*qv7*_k +zM%5WM$*Vou!Y7D@*jCa6 +zYHwni68{B(ythcY+j4tKR&BK~wpq+p_I^Ee5*>UjeSbn=Z@M{3)IDB1h`wTBv8Vf) +zGUabKI^vx;3Bt3)O=|zXZF^CRCWGFRoqrAlxT0y&$j5q6SnOOU5o0?&Ps&D6Ph}`# +zwY!d(eP-j3KN_5`jU!b3rM~A)_kI~RXoFy;RSw!9pX9GG#B*F)`BST~98N+GqC9J7 +zyK!;S%6g@oNzmD1wzp`{WZzW@_X`T-&+vR;$j+YidW6`>)~^xl)>6cuUrT~*Lu`sa +ztO}<9;#H(Q==8o5Tl}2UX=uGs%2mo19NqD{5U5NNDyo1Rz+mR`!bH$50%+yM7He^f +zdBH00TyclwDiI=}Q>9_P*rcl2Xnz%4ZX#_#&l$m~RIyIW^MA=hnUPFr%4bUq`Q(Rz +zpGTKslcC%{fbRe!3oa<}4EKVhQ%zS`J2GeEVr+blZ0VAxrNnYnS|C25Uov}{GHoRv +zfFHfa&Jwlv(G^#}8A+}RLJN4n=M4UA|@AT(`^>Fu_AKhK^yT$XPA9`v4eB_FD$ie0HD3Mi4;`s$hx2m9!(i8H!RzGg?C)?9Pb`H(UMj +z<8h|0U)ScABl{{?sOhBJJ+yFPUOt7$z&nj*C(+UXB1_UZbG@s_K&)51_vPKxQ4~mI +zVsBl7$^wYH(tS=4B*eHGsefF8JLWa`(eLnE!hn1l1gzVr56RAj0G_?aY8PsdnewAx +zZT0?fpiS{s0Aw+t2$UUQ8M-rW={ko_;sJpjJ1cye3c$(VR4{`2w#4pbFy+`(TlH;+ +zsRJ^EQ{%@!-i8GRBqYoy6jIyiS8YC#b<%d)^wC2C>^bvFCR##kmw%eyk5ClDOBLPk +z?ZY@ePP8_qq>U*{?_kesZmky4-_cLmu?|B2);KDCQ?spBIJE?6j8`9&{>UoVIRUPw +zrx_TuibGY$dcSSH{d>KOqk_s$i=X_v>|dz1MMzQ0CJX+$*Y(PaiAhNRl8^?%L6tN! +zoCVZZRG(i1T9lcmLVv7ZE)U68M1}eqD2QeQo3F+z`_kj^3BAQ~kifx^iJVoht|)uQ +zp@Zi4b(sUN|HikW5)IF|`VA(5R}Oig)4g3o@Edr6G~IUUj9NaSza}p$jk_pOfzO2r +z`Uq<(Z;%5A7DwJe@~J%KO>wC&&NuCjN8iAHC?0eTu|CfS+kf-2P)BX2mNxYJOt)<# +zud7R9Is%@q9H$%no|irWi2&HJ00Qekek!<&=4kke7cKnH-x$$Mg_!j+R4)~S@4-7 +zr5;gyzbMDhd4E#B$j(G@-z05T!$YZ=j)t^KKgHs!H_s_|8VC%~m+HAY-YK*Nx44gH +zaUG54Wez*M!YaxNS#)BjN)7?2M!A3NOY99Oa}Rb;C#RPNionqlK3@N0PTt)Op#&Rj>ipw!qDZki{+-V5CQD(Yj^-6 + diff --git a/fuzz/corpus/2fd9d2ac708ab80a363a4a87e0cadbb43cc65663-1 b/fuzz/corpus/2fd9d2ac708ab80a363a4a87e0cadbb43cc65663-1 new file mode 100644 index 0000000..e5f77fc --- /dev/null +++ b/fuzz/corpus/2fd9d2ac708ab80a363a4a87e0cadbb43cc65663-1 @@ -0,0 +1,3 @@ +--- c ++++ c +@@ -1 +14 @@ \ No newline at end of file diff --git a/fuzz/corpus/3080170202916bb9cf47c4df29928c506cfaf41c-11 b/fuzz/corpus/3080170202916bb9cf47c4df29928c506cfaf41c-11 new file mode 100644 index 0000000..3b2a7fa --- /dev/null +++ b/fuzz/corpus/3080170202916bb9cf47c4df29928c506cfaf41c-11 @@ -0,0 +1 @@ +diff --git "󗿿󗿗󗗗󗏗󗏽󗿗" \ No newline at end of file diff --git a/fuzz/corpus/30eef83bfbb2021cf54092f17e88660ae71a904c-8 b/fuzz/corpus/30eef83bfbb2021cf54092f17e88660ae71a904c-8 new file mode 100644 index 0000000..545f426 --- /dev/null +++ b/fuzz/corpus/30eef83bfbb2021cf54092f17e88660ae71a904c-8 @@ -0,0 +1,3 @@ +@@ - @@ +@@ - @@ +@@ - @@ \ No newline at end of file diff --git a/fuzz/corpus/3129cca64c0e61068d00275296afa34b54ae71db b/fuzz/corpus/3129cca64c0e61068d00275296afa34b54ae71db new file mode 100644 index 0000000..cfc2d34 --- /dev/null +++ b/fuzz/corpus/3129cca64c0e61068d00275296afa34b54ae71db @@ -0,0 +1,5 @@ +diff --git /dir/ten.bin /dir/ten.bin +GIT binary patch +literal 0 +gcmZQzU|?i`U?w2V48*KJ%mKu_Kr9NxNEdj0j+0gOSwSsFsr$0q6zUJph6y58_9A0C8YojfI{2l| +@@ --3, ___9w__|D(^Fr8U(_Q_qI9_7Rw_Bn1G_fj_4_0O_tm__6_6qb_jZEh_X7 \ No newline at end of file diff --git a/fuzz/corpus/3eec76dbd6c50d59c11c189f10323577aa950f16-1 b/fuzz/corpus/3eec76dbd6c50d59c11c189f10323577aa950f16-1 new file mode 100644 index 0000000..6c5c3cf --- /dev/null +++ b/fuzz/corpus/3eec76dbd6c50d59c11c189f10323577aa950f16-1 @@ -0,0 +1,2 @@ +diff --git +copy from \ No newline at end of file diff --git a/fuzz/corpus/3f0ffd0aced3f9866436bc2f2b9473af36e831cc-1 b/fuzz/corpus/3f0ffd0aced3f9866436bc2f2b9473af36e831cc-1 new file mode 100644 index 0000000..2f58b73 --- /dev/null +++ b/fuzz/corpus/3f0ffd0aced3f9866436bc2f2b9473af36e831cc-1 @@ -0,0 +1,5 @@ +diff --git /dir/ten.bin /dir/ten.bin +GIT binary patch +literal 0 +gcmZQzU|?i`U?w2V48*KJ%mSu_Kr9NxNJ`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo +zWu(4bg|8QwzZ|1e*rL4P#)`FenESlLZ3%0XmZb1N#I__7UCuR5Dxu + diff --git a/fuzz/corpus/7acb1d0e93e420ddcc7c4819373c911a8807f716-7 b/fuzz/corpus/7acb1d0e93e420ddcc7c4819373c911a8807f716-7 new file mode 100644 index 0000000..cbb023f --- /dev/null +++ b/fuzz/corpus/7acb1d0e93e420ddcc7c4819373c911a8807f716-7 @@ -0,0 +1 @@ +diff --git "\"\"\"\"\"\" \ No newline at end of file diff --git a/fuzz/corpus/7bb648adae935c83ff342480a1c2e0c98aea9ace-10 b/fuzz/corpus/7bb648adae935c83ff342480a1c2e0c98aea9ace-10 new file mode 100644 index 0000000..34ed802 --- /dev/null +++ b/fuzz/corpus/7bb648adae935c83ff342480a1c2e0c98aea9ace-10 @@ -0,0 +1,4 @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ \ No newline at end of file diff --git a/fuzz/corpus/7c1e7e76575534444870f58b4a0e41fa31e80272 b/fuzz/corpus/7c1e7e76575534444870f58b4a0e41fa31e80272 new file mode 100644 index 0000000..5f4d739 --- /dev/null +++ b/fuzz/corpus/7c1e7e76575534444870f58b4a0e41fa31e80272 @@ -0,0 +1,5 @@ +diff --git /gitdiff/testdata/apply/bin_fragment_delta_error.src /gitdiff/testdata/apply/bin_fragment_delta_error.src +GIT binary patch +delta 1 +Xc${UtY+{_?z`_4As|XMP0RR6K8UwQc + diff --git a/fuzz/corpus/7c365edaee1dc624df539090562a78e1d03b88b2 b/fuzz/corpus/7c365edaee1dc624df539090562a78e1d03b88b2 new file mode 100644 index 0000000..c3b66f5 Binary files /dev/null and b/fuzz/corpus/7c365edaee1dc624df539090562a78e1d03b88b2 differ diff --git a/fuzz/corpus/7c7a03417ee769639c972de253b3ae1ee8cf51a8 b/fuzz/corpus/7c7a03417ee769639c972de253b3ae1ee8cf51a8 new file mode 100644 index 0000000..75e1b8d --- /dev/null +++ b/fuzz/corpus/7c7a03417ee769639c972de253b3ae1ee8cf51a8 @@ -0,0 +1,5 @@ +diff --git /gitdiff/testdata/apply/bin_fragment_delta_error.src /gitdiff/testdata/apply/bin_fragment_delta_error.src +GIT binary patch +delta 1 +Xc${UtY+{O?zP_4Ar|XMP0RR6K8UwQc + diff --git a/fuzz/corpus/7c9c7f6b7aa9cacb9bc366516cfaf21f1b65a8c5-1 b/fuzz/corpus/7c9c7f6b7aa9cacb9bc366516cfaf21f1b65a8c5-1 new file mode 100644 index 0000000..34382df --- /dev/null +++ b/fuzz/corpus/7c9c7f6b7aa9cacb9bc366516cfaf21f1b65a8c5-1 @@ -0,0 +1,4 @@ +--- c ++++ c +@@ -1 +4 @@ + \ No newline at end of file diff --git a/fuzz/corpus/7cdca21ab82713b7416e8f87f9db5521c4095885-1 b/fuzz/corpus/7cdca21ab82713b7416e8f87f9db5521c4095885-1 new file mode 100644 index 0000000..a327b60 --- /dev/null +++ b/fuzz/corpus/7cdca21ab82713b7416e8f87f9db5521c4095885-1 @@ -0,0 +1,9 @@ +diff --git /gitdiff/testdata/apply/file_bin_modify.src /gitdiff/testdata/apply/file_bin_modify.src +GIT binary patch +delta 172 +zcmV;d08{^f2)qc8AP{I3VQ>J`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo +zWu(4bg|8QwzZ|1e*rL4P#)`FenJ`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo +zWu(4bg|8QwzZ|1e*rL4P#)`FenXTQ5=J2y;^BfB}4 +zWkisH791|vOVl5e-@^VLX0s~Ky_UyN!3;CgPr>Edj0j+0gOSwSsFsr$0q6zUJphL*`JUiBtu5J`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo +zWu(4bg|8QwzZ|1e*rL4P#)`FenXTQ5=J2y;^BfB}4 +zWkisH791|vOVl5e-@^VLX0s~Ky_UyN!3;CgPr>Edj0j+0gOSwSsFsr$0q6zUJphJCY +zqz)g`N&ViW9W6D7kX7GX{y{m=JvFi1-r`PEE?SE&^2StK}qz5hC +zom0ywdCWuNb#YXdd0%FMNHft!FTER$>uzu5gxdoGBy789raJBW7jAhN2TWFL{P%2l +z|AX{}Jz8U}Y*X|~=?4<;F4)94!-e?w)#D0h8n1_ORWNCOC&7=!U0MP3BI0~M)pZ-cf6aFkVFzO&JOkcv7FeEq|)DcBDAP&_&ZgBk* +zVp(I^5-bN3L{~g{bHnkWX%0Hj02~njkKX8Zz%Ih#=LBD%Pk%TkW4ize_HweE#@_-2 +zvpyE#e@^n#rRGx;O84LB3bMdrxdv%Gkc)ZQq%8pkxT9b*)}Z&t5bibZ0)8H8T33vN +zgTj)j_%wz13x+TZ6LgdupD^ke2!n7E-YZ%8n3OTzK5*T(BH>ltfU|QJ7VTAur}ah?0sC%ZUY?&xwkEUw@Y9LqO1~eF>>5cDlg_YxuF| +zZ58JVlu7IBfP1@TDmG;<{X>(&*HyC-7zqRrY~#3W>hP8@a&jwYi_$k(j`D$Ta97 +z{(rL4B7Ysa#+5QC40p?w_V}r&G%{W$)8R1P`wet5K>`4D&EanFW{d2mOBvm~hJviTXh@a)Qp^TpF9X}vEVN-{LA%5Xp^*>%23c&{6HgPH4ahb@257yLNuno+(_9IJ!cgw97b*@K~X-9f8rdsd` +zOSj362)!mBsX%A +zQ*StV4WzVHG#+*IwPf7@BwNAUN{Tre0&7KHK8Gq6W2Jeqe%S(>+{1HM$cFn>J%6m& +z|8$kpBb=Dxh6$MwDCzl1g;Y`~f7F-wEny-#iI1X?l(D;Z$PLR3jay0@l4S5PR8fS< +zi+>Hek8mDV9ItDt3}cF;v-yN79ZUwT1^LyF1n$Cy%gt_C&r9r*A*)&$ZFlHnVf=mg#Q%sK{dyD8$2z{ndd#G^c?_~0mb!M$7ZxU$373E=vV}GR5OrWDm +zBsRhxx$#Ql_U#b2h}uPg{qm53MhlGO!F^=m@8@Ie88^`%?=q2+>^o91FPtaKgX{mUR_AEr9NwT^_^@8>UHx +z6Vql9ovz7$NpnPl5QlqsKP0|}EskXfTz-@ZpBlsI-~?B-4%w_GY9s9?ln=!A8wNMf +z=;eAIwp6&0nZ9Qq({C*2AXxKEGCjGa)2K^@ryP2!6dWiRy0M0vL*145f@BzR +z`IXs~3pGOq&;GIFDC=$JbDmK$C`A~nS$@*@hY$2e@kN0E;7jK@*TzW0 +z2FmwjqM0G-dfMDB3x5@pycb${TTJ7dzu+teFC9mUiSr(jrvQ~;sj`>uoen9{iXP5; +zbF9`-K065Zx&Tv2gK4wf8(U++M31oGlTiV$(^)qux97HP~_mSNPtqZA#7xOo;Q +zc-B?N(jYE1ix_L{M|cpCS4s5I3Tx_Hh1#!O-iBP5iS>iM{C~ZUez^pglqH5IAdOAD +zE;AjwjL)_IsQU6y4t4Uc9KXl~!BYeA;B8*wK)|cg^tiD0aN2iWzR>YnUUS9?3jKhiAKpgQ0 +zCRNTKwkeO~{pU2|S8)UYp21g#5$lGV|mN +zdQNSkH%R6}>C_cemrZCjR|-)D<8Y^P74a}>FKs&95{8d9SiTvhB4{eTUGFbTa-IbX +z8Lw1xoPPp_ZdIbl#dCzP1`N@V?eb7SizWtmm5ujG(rKZHZw$>Ozzf4E=Yf*+eH}kn +zL{&n><${iESA&t~5pz;&vs%HlLYxXMjPlLH{?*-#T4#$(P;pke+8K*f)n*Ph>SB9|8)|f;w=%OP6`nms +zdFVyjJf#&^=o+P_Y1Q{$$Aql8VqX+>=4)lx*&wB#{$tlb&SwC3E~G-pKOFXRQrRSk +zMt}Fa|4IQc;^N}stu@1BVjk>`8grvj#WVz9k#>7N?#JQZdag9deih!2aWVB}1klbo +zXKhuKy*h7m?``T}aM*}PexaGXqeZCm>ME7BQi64D>9lL0AoF2`Tzo^hNSMC9B=jT@ +zjA%viojl=gm6?1mPDg-)fy98Cb}Bdio_{dD+i;%nIJ6ZfQ^LPvl@~R#wk@K-##0ma +zj|D(^Fr8U(o(FRy$Z0FGyp@Yam&`H8oVv>6n8UKEVec>#*NVp)YrdOPgay4SxQ!PjT#gf^PISz?!W;(=9W +zC3sT|H>d}ErTr;c8LY_P{IPZ;Wq&_a4mM`dLu +zn^@7N(YC~q-qV~usbu?>{mD#~LNHhWdnNcaB&J>J@M)=+i^{*SwmS-XE-ywoYoZ3U +zdb4|M(!Ok$LY!K2m*Wjy>w_)zTm#k_g&J$VCb%~Wdvc^;lfge`vp1dg{O^Aqhg$$l5i=+C+Ser`KQQfEhZr}z4>;>#SGZZ*qGHd~H-az)BPnlSx{cgt);r6Mgt;@-+9-E2t@FXz( +zkh$)!g3>JMRK2Fj;(t$e?z7fJ;>m@#_j;z{x_|Hzf&NnB2s)A$gs4~;$GCPhUTy3P +z%V#3D9@E1QNOb5UL}Ny_3_nU3V+}u&a}K`lA2AVv-@33!d)C9C2b%Dl#4Wp`G3Y#VXS2vODOK +zH6Ik?Qx|Shj(@mOGi-V8X@6z3u=_{}wqW)r%+?8?joDa^!2`v;{CIT;J4sydrLxNW +zgUBvqK&gHOJyAP#hP2e3p;XKF@8~4;2})IVed0tk&>;1X$v5<9B1$g>xX)iE=u55Vhuq!Be_Zh7H_L0ojmJ-L7F +zFE;pV4HH_WmO_~*TJ#EHu@A`M)iV-3k0!7^nIQ%08mJA-{<~wkIj0>_AP%Vz_4#<* +vVkRz)@E~iIs*PG)1#O3 +z^y`3>TH+sKUrDep!F5A*^DLBShsp6!+cwX9)&)8gv+|D%3&Z;I1%KSpdiN0>xk9!c +zDy`)OH&-h44JMjA=aom~2^DT%XWWk@BGsF>T2qX9tzqChzyU07Q5O!7pHe8DLN|bp +zdlTM)yHOJqRKS{Ok~8#6aa|1~wdC!f6HE-YeYg|0WDJ@d5_mH_Xk7QkFCJ);Ovbo( +zM*o?Jc;mjWG9!T2#lADbM8kdZGB*L;W@^4gw!CX?raCf7DLTZhN{Ky@jK1r2x?YmoKqE|=?ny{_>M +zPW`hAEW;McTgizc-%KZOZ(LC{iJ26YFd!W@TJ{Cm#XaWxI)6edCQgN9H-J&#etfq2BL8u2mpTqV;-qg8O*hlGo~w*^QU&D8~wh* +zjRoXGhq}{c%8{%P7XC3-Gtv_4vPhC&G({}4=soxR<|OO8=U32O6B6X4cu}vawOLA8 +zUCsnRtC7@}bbt5OjoNEaRt9SW579M@O#ke{I?9P!pHGx8+mS!>XB(pRy3MCefz~7F +zw>%NX4brs~1S)zzfOF(+Ek>{e>P?F^u#}8;o=P;Q#CD^EyGpfE6zisF&7Wp0@PM#uQ8l(zm +zP$=UTG!hf$iSFO~fxdOLf78q%Z-e$nFbWUzJ1GphTCI4>g(9IgBR5F8ark@QBWdEc +z#zwo4Yk#W3G2@1tNzg@lLP}&U1pA#O7MZO99tC&}9^@dg>AOG&wsG)`L6)m8D^F-bi%B9Fk!}EJ;7-NTD*1)VJblm%?L@A$yiNR_ +zN*tPjf$n}UNI)oYV<>TQzBo6=Js6=KI%9xd0e}BZ7R)GU!se_DK2rXrAU6Li*}JNk +z#OhSK^H=?bSi&TwvW+tB(6HGW@aslSEso+M=;CSx(a|*2cpNSek=YCt0xna?)V|}{ +zTrlxT(K!Y~T&oi%3ZE#@!{L<{lsr)-9)*xnPKtF8N_ai2o#MZ0IBC!gL$Qsp6Z +z8Gn6s&gnB+R1tMMtKG)p(&tf2mQR=p-i$vp0Miv<=k6$|Zzncr&mA(7R@^rLWDs=I +zYQH*agSALP4X>gKE|9hMvV&2kw^AvZ!faW}gmNmbaQYn9l7n@!u{?2sM8nv;Tmv{O +zBGR5{oW=M)QBwCHaH^{#iZy8#xtUkH+J6it`5)T}v?(oj_fcQINt+8O%OF`^vYP4)mg#jyW+dip{0)NO!-BTlR_?Vq;{U272sSWrCqIVm8cQL +zrQmZDOJ2`L8Ma$4xNjy5tYTIfMP$0Cem%%TLvRcw`DGcD@_|S%DDQ4u3UK +z8OEd2toTA8!T^Fm!2&_{Jf5ZMEi=opVlV!Ik +z<##3|qPvm^@~emp!AcWqZnh=Kjei*4uG>XNb8+}}YQ^1W{{z9%$|}v5_lcs>dBQ)!1^xT1u+L5lB_@cL=1D~x9Wuz +zxNt@}3^A_ZoI>X}!Mx*>E&MhCXYogWFhGnpZyeU!If!?eQb$yAbIIg><^*Non_1wm3-B0LADTnL +z@Hcy)r!Y%8x7clRE|bsgq9dRISAT07rTRBH&nUUbh`5p}Mb34r|9T->C}v-0X5Ec}{F9eQ~ +zhpvHGyil+IHRzd!=^rDs{FlTe*YP3?X>tO`A|pa&VSnR#Teu~TOBJYPw~MpSAuLU& +zyl44lEnDGx9xOCB98{3a*(->ajsd_h%GmzCJno?Q&Pk&<XzvfiOofjV7KjkT8RO)tQL0)FS;%Xt5w2$x+^;B_k^yfQRtHC!ndJ& +z&$LQY(4EC(dem!kO3UB}z~JrL$`X9Qg4CLqd7*@Hn2yxVThL!~BW +za6(zTA3VB62Y($=87Nd(yuJH&{z_$9;Eo)VO3Rv;-+gC34F02W_29+|Br6D$(fQ&u +z--#+MO#x4xiRrjERDA?xBfD@AaPlspDCD~m)QT=JS6a}X`|BZPaBeJ2pzNE=Uv-7K +zn1=v3M4?6-!r&5zU^ey=zQ|mJwNTM3ynPRaeEP2%Ab&NAz23L!+3J78>DNz@ +zcRGVQ{T78^a%8e;7hmY!<1!>F%P3kh+(XpJvYZi2+_KJ{TpjXm2?SpLtC$kZ^u(dN +zk6GUPl;ciEb+#wFOVmH>IJ*$ACbE1kae%lKRxO7TlRgGD&%hdcWBJ_hl&X@eH`oP+ +zEE(=8aL=VamW$>w$<-v#=-Gn(S+ +z3;|DiLStTzl)8WRlm|&b);zFN)QobrszD9rwkLNNY*MK+{OAn&2FY03tEpf5Jpj54Gk>^{cy&yUeV3R*pRs^>fqgveU|_5X +zX+e%27qs2?7c(6BMHwnKprk+Z!)v4I=V4BAvdR#Lu7_d4gJ5#jsXEF%=!5*qv7*_k +zM%5WM$*Vou!Y7D@*jCa6 +zYHwni68{B(ythcY+j4tKR&BK~wpq+p_I^Ee5*>UjeSbn=Z@M{3)IDB1h`wTBv8Vf) +zGUabKI^vx;3Bt3)O=|zXZF^CRCWGFRoqrAlxT0y&$j5q6SnOOU5o0?&Ps&D6Ph}`# +zwY!d(eP-j3KN_5`jU!b3rM~A)_kI~RXoFy;RSw!9pX9GG#B*F)`BST~98N+GqC9J7 +zyK!;S%6g@oNzmD1wzp`{WZzW@_X`T-&+vR;$j+YidW6`>)~^xl)>6cuUrT~*Lu`sa +ztO}<9;#H(Q==8o5Tl}2UX=uGs%2mo19NqD{5U5NNDyo1Rz+mR`!bH$50%+yM7He^f +zdBH00TyclwDiI=}Q>9_P*rcl2Xnz%4ZX#_#&l$m~RIyIW^MA=hnUPFr%4bUq`Q(Rz +zpGTKslcC%{fbRe!3oa<}4EKVhQ%zS`J2GeEVr+blZ0VAxrNnYnS|C25Uov}{GHoRv +zfFHfa&Jwlv(G^#}8A+}RLJN4n=M4UA|@AT(`^>Fu_AKhK^yT$XPA9`v4eB_FD$ie0HD3Mi4;`s$hx2m9!(i8H!RzGg?C)?9Pb`H(UMj +z<8h|0U)ScABl{{?sOhBJJ+yFPUOt7$z&nj*C(+UXB1_UZbG@s_K&)51_vPKxQ4~mI +zVsBl7$^wYH(tS=4B*eHGsefF8JLWa`(eLnE!hn1l1gzVr56RAj0G_?aY8PsdnewAx +zZT0?fpiS{s0Aw+t2$UUQ8M-rW={ko_;sJpjJ1cye3c$(VR4{`2w#4pbFy+`(TlH;+ +zsRJ^EQ{%@!-i8GRBqYoy6jIyiS8YC#b<%d)^wC2C>^bvFCR##kmw%eyk5ClDOBLPk +z?ZY@ePP8_qq>U*{?_kesZmky4-_cLmu?|B2);KDCQ?spBIJE?6j8`9&{>UoVIRUPw +zrx_TuibGY$dcSSH{d>KOqk_s$i=X_v>|dz1MMzQ0CJX+$*Y(PaiAhNRl8^?%L6tN! +zoCVZZRG(i1T9lcmLVv7ZE)U68M1}eqD2QeQo3F+z`_kj^3BAQ~kifx^iJVoht|)uQ +zp@Zi4b(sUN|HikW5)IF|`VA(5R}Oig)4g3o@Edr6G~IUUj9NaSza}p$jk_pOfzO2r +z`Uq<(Z;%5A7DwJe@~J%KO>wC&&NuCjN8iAHC?0eTu|CfS+kf-2P)BX2mNxYJOt)<# +zud7R9Is%@q9H$%no|irWi2&HJ00Qekek!<&=4kke7cKnH-x$$Mg_!j+R4)~S@4-7 +zr5;gyzbMDhd4E#B$j(G@-z05T!$YZ=j)t^KKgHs!H_s_|8VC%~m+HAY-YK*Nx44gH +zaUG54Wez*M!YaxNS#)BjN)7?2M!A3NOY99Oa}Rb;C#RPNionqlK3@N0PTt)Op#&Rj>ipw!qDZki{+-V5CQD(Yj^-6 + diff --git a/fuzz/corpus/bin_fragment_literal_create.patch b/fuzz/corpus/bin_fragment_literal_create.patch new file mode 100644 index 0000000..b3b846a --- /dev/null +++ b/fuzz/corpus/bin_fragment_literal_create.patch @@ -0,0 +1,8 @@ +diff --git a/gitdiff/testdata/apply/bin_fragment_literal_create.src b/gitdiff/testdata/apply/bin_fragment_literal_create.src +GIT binary patch +literal 32 +ocmZQzU`lR_IpTEvL*`JUiBtu5L*`JUiBtu5 +2019 -0700 + +fragments. + +arbitrary. + +diff --git a/dir/file1.txt b/dir/file1.txt +index ..03e1d 100644 +--- a/dir/file1.txt ++++ b/dir/file1.txt +@@ -3,6 +3,8 @@ 1 + +- +- + ++ ++ ++ + +- ++ ++ +@@ -31,2 +33,2 @@ 2 + +- ++ +diff --git a/dir/file2.txt b/dir/file2.txt +index ..14b7f 100644 +--- a/dir/file2.txt ++++ b/dir/file2.txt +@@ -3,6 +3,8 @@ 1 + +- +- + ++ ++ ++ + +- ++ ++ +@@ -31,2 +33,2 @@ 2 + +- ++ diff --git a/fuzz/corpus/c56705482f132b611d1f1f314aabb3d193944c03-6 b/fuzz/corpus/c56705482f132b611d1f1f314aabb3d193944c03-6 new file mode 100644 index 0000000..58b45b4 --- /dev/null +++ b/fuzz/corpus/c56705482f132b611d1f1f314aabb3d193944c03-6 @@ -0,0 +1 @@ +diff --git "\"\"\" \ No newline at end of file diff --git a/fuzz/corpus/c5c884d0a0ba959b57a0a55b989386b1cfe5d57f-8 b/fuzz/corpus/c5c884d0a0ba959b57a0a55b989386b1cfe5d57f-8 new file mode 100644 index 0000000..bf8c711 --- /dev/null +++ b/fuzz/corpus/c5c884d0a0ba959b57a0a55b989386b1cfe5d57f-8 @@ -0,0 +1 @@ +diff --git "\f\f\f" \ No newline at end of file diff --git a/fuzz/corpus/c64519ceff304b9b73bdebe8fbf9337c8ad91f43-2 b/fuzz/corpus/c64519ceff304b9b73bdebe8fbf9337c8ad91f43-2 new file mode 100644 index 0000000..143877b --- /dev/null +++ b/fuzz/corpus/c64519ceff304b9b73bdebe8fbf9337c8ad91f43-2 @@ -0,0 +1 @@ +@@ -161,12 +1dnsmessage.OPTResource{Options: []dnsmessage.Option{61,7 @@ \ No newline at end of file diff --git a/fuzz/corpus/c668a721552c770323cdb5cf8287364f1cb3e73a-12 b/fuzz/corpus/c668a721552c770323cdb5cf8287364f1cb3e73a-12 new file mode 100644 index 0000000..b297a31 --- /dev/null +++ b/fuzz/corpus/c668a721552c770323cdb5cf8287364f1cb3e73a-12 @@ -0,0 +1,15 @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ +@@ - @@ diff --git a/fuzz/corpus/c681ec88a7c1cbd5ff4d367c72e4db330750dba9-2 b/fuzz/corpus/c681ec88a7c1cbd5ff4d367c72e4db330750dba9-2 new file mode 100644 index 0000000..8907f38 Binary files /dev/null and b/fuzz/corpus/c681ec88a7c1cbd5ff4d367c72e4db330750dba9-2 differ diff --git a/fuzz/corpus/c72a3a6061da1720b11b94b926f4e1b31bd292bc-4 b/fuzz/corpus/c72a3a6061da1720b11b94b926f4e1b31bd292bc-4 new file mode 100644 index 0000000..a43c3a0 --- /dev/null +++ b/fuzz/corpus/c72a3a6061da1720b11b94b926f4e1b31bd292bc-4 @@ -0,0 +1 @@ +diff --git "a@4õj/apply/fJoile_bimodif-gn_modify.slc /gitdiff/ly/file_bin_mo_bin_src /gitdiff/testdatT/lҿSappry/file_bin_modif-gittectõӎ;;" \ No newline at end of file diff --git a/fuzz/corpus/c89187ac57e3c4ff1979d66e0e51f2abc23833d0-1 b/fuzz/corpus/c89187ac57e3c4ff1979d66e0e51f2abc23833d0-1 new file mode 100644 index 0000000..a1919a5 --- /dev/null +++ b/fuzz/corpus/c89187ac57e3c4ff1979d66e0e51f2abc23833d0-1 @@ -0,0 +1 @@ +diff --git " \ No newline at end of file diff --git a/fuzz/corpus/ca1ee68f0883f17fa68e711d5385bb8431ba7941-4 b/fuzz/corpus/ca1ee68f0883f17fa68e711d5385bb8431ba7941-4 new file mode 100644 index 0000000..06d0dc8 --- /dev/null +++ b/fuzz/corpus/ca1ee68f0883f17fa68e711d5385bb8431ba7941-4 @@ -0,0 +1,5 @@ +@@ -g + @@ +@@ -U + @@ +@@ - + @@ +@@ -U + @@ +@@ - \ No newline at end of file diff --git a/fuzz/corpus/ca75154d2d4a16bc096a63119ab28df8ffbfcb0d-7 b/fuzz/corpus/ca75154d2d4a16bc096a63119ab28df8ffbfcb0d-7 new file mode 100644 index 0000000..990276c --- /dev/null +++ b/fuzz/corpus/ca75154d2d4a16bc096a63119ab28df8ffbfcb0d-7 @@ -0,0 +1 @@ +diff --git "" \ No newline at end of file diff --git a/fuzz/corpus/cb96aabdd13201e0965b6403705aed68c27ac35e-1 b/fuzz/corpus/cb96aabdd13201e0965b6403705aed68c27ac35e-1 new file mode 100644 index 0000000..3d611b9 --- /dev/null +++ b/fuzz/corpus/cb96aabdd13201e0965b6403705aed68c27ac35e-1 @@ -0,0 +1,4 @@ +--- c ++++ c +@@ -1 +4 @@ + \ No newline at end of file diff --git a/fuzz/corpus/cbc29e560aa992ea909118d4096fd477ec43d03a-1 b/fuzz/corpus/cbc29e560aa992ea909118d4096fd477ec43d03a-1 new file mode 100644 index 0000000..b9485d5 --- /dev/null +++ b/fuzz/corpus/cbc29e560aa992ea909118d4096fd477ec43d03a-1 @@ -0,0 +1,5 @@ +diff --git /gitdiff/testdata/apply/bin_fragment_delta_error.src /gitdiff/testdata/apply/bin_fragment_delta_error.src +GIT binary patch +delta 1 +Xc${UtY+{O?z`_4As|XMP0RR6K8UwQ% + diff --git a/fuzz/corpus/ccc5336636fd824efefac3ec0112969af475926f-14 b/fuzz/corpus/ccc5336636fd824efefac3ec0112969af475926f-14 new file mode 100644 index 0000000..bba8a1f --- /dev/null +++ b/fuzz/corpus/ccc5336636fd824efefac3ec0112969af475926f-14 @@ -0,0 +1,6 @@ +@@ -+ + @@ +@@ -+ + @@ +@@ -+ + @@ +@@ -+ + @@ +@@ -+ + @@ +@@ -+ + @@ \ No newline at end of file diff --git a/fuzz/corpus/cd593cf1c2aad12725f6435983ca2a4b2dfd9f54-8 b/fuzz/corpus/cd593cf1c2aad12725f6435983ca2a4b2dfd9f54-8 new file mode 100644 index 0000000..d750fa0 --- /dev/null +++ b/fuzz/corpus/cd593cf1c2aad12725f6435983ca2a4b2dfd9f54-8 @@ -0,0 +1 @@ +diff --git "\x10" \ No newline at end of file diff --git a/fuzz/corpus/cdf6ab1b52f9fa386a12a71641e880543d1c3d42-2 b/fuzz/corpus/cdf6ab1b52f9fa386a12a71641e880543d1c3d42-2 new file mode 100644 index 0000000..1fdf35c --- /dev/null +++ b/fuzz/corpus/cdf6ab1b52f9fa386a12a71641e880543d1c3d42-2 @@ -0,0 +1,5 @@ +diff --git /gitdiff/testdata/apply/bin_fragment_delta_error.src /gitdiff/testdata/apply/bin_fragment_delta_error.src +GIT binary patch +delta 1 +Xc${Uta+{O?z`_4ArxXMP2RR6K8UwQc + diff --git a/fuzz/corpus/cf72ce9a7ee2cef25877f25d5259c8358b02c7c1 b/fuzz/corpus/cf72ce9a7ee2cef25877f25d5259c8358b02c7c1 new file mode 100644 index 0000000..bf0da4d --- /dev/null +++ b/fuzz/corpus/cf72ce9a7ee2cef25877f25d5259c8358b02c7c1 @@ -0,0 +1,13 @@ +diff --git /gitdiff/testdata/apply/file_bin_modify.src /gitdiff/testdata/apply/file_bin_modify.src +GIT binary patch +delta 172 +zcmV;d08{^f2)qc8AP{I3VQ>J`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo +zWu(4bg|8QwzZ|1e*rL4P#)`FenXTQ5=J2y;^BfB}4 +zWkisH791|vOVl5e-@^VLX0s~Ky_UyN!3;CgPr>Edj0j+0gOSwSsFsr$0q6zUJphJ`s>wb0HU+h#6w8q?tUO~cHmDjZi2<8yZ9XmKhhMdo +zWu(4bg|8QwzZ|1e*rL4P#)`FenXTQ5=J2y;^BfB}4 +zWkisH791|vOVl5e-@^VLX0s~Ky_UyN!3;CgPr>Edj0j+0gOSwSsFsr$0q6zUJph +Date: Tue Apr 2 22:55:40 2019 -0700 + + A binary file with the first 10 fibonacci numbers. + +diff --git a/dir/ten.bin b/dir/ten.bin +new file mode 100644 +index 0000000000000000000000000000000000000000..77b068ba48c356156944ea714740d0d5ca07bfec +GIT binary patch +literal 40 +gcmZQzU|?i`U?w2V48*KJ%mKu_Kr9NxN +Date: Tue Apr 2 22:55:40 2019 -0700 + + A file with multiple fragments. + + The content is arbitrary. + +diff --git a/dir/file1.txt b/dir/file1.txt +index ebe9fa54..fe103e1d 100644 +--- a/dir/file1.txt ++++ b/dir/file1.txt +@@ -3,6 +3,8 @@ fragment 1 + context line +-old line 1 +-old line 2 + context line ++new line 1 ++new line 2 ++new line 3 + context line +-old line 3 ++new line 4 ++new line 5 +@@ -31,2 +33,2 @@ fragment 2 + context line +-old line 4 ++new line 6 diff --git a/fuzz/corpus/text_fragment_add_end.patch b/fuzz/corpus/text_fragment_add_end.patch new file mode 100644 index 0000000..de708be --- /dev/null +++ b/fuzz/corpus/text_fragment_add_end.patch @@ -0,0 +1,9 @@ +diff --git a/gitdiff/testdata/apply/fragment_add_end.src b/gitdiff/testdata/apply/fragment_add_end.src +--- a/gitdiff/testdata/apply/fragment_add_end.src ++++ b/gitdiff/testdata/apply/fragment_add_end.src +@@ -1,3 +1,5 @@ + line 1 + line 2 + line 3 ++new line a ++new line b diff --git a/fuzz/corpus/text_fragment_add_end_noeol.patch b/fuzz/corpus/text_fragment_add_end_noeol.patch new file mode 100644 index 0000000..ec3cea4 --- /dev/null +++ b/fuzz/corpus/text_fragment_add_end_noeol.patch @@ -0,0 +1,11 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_add_end_noeol.src b/gitdiff/testdata/apply/text_fragment_add_end_noeol.src +--- a/gitdiff/testdata/apply/text_fragment_add_end_noeol.src ++++ b/gitdiff/testdata/apply/text_fragment_add_end_noeol.src +@@ -1,3 +1,5 @@ + line 1 + line 2 +-line 3 +\ No newline at end of file ++line 3 ++line 4 ++line 5 diff --git a/fuzz/corpus/text_fragment_add_middle.patch b/fuzz/corpus/text_fragment_add_middle.patch new file mode 100644 index 0000000..43aee3b --- /dev/null +++ b/fuzz/corpus/text_fragment_add_middle.patch @@ -0,0 +1,9 @@ +diff --git a/gitdiff/testdata/apply/fragment_add_middle.src b/gitdiff/testdata/apply/fragment_add_middle.src +--- a/gitdiff/testdata/apply/fragment_add_middle.src ++++ b/gitdiff/testdata/apply/fragment_add_middle.src +@@ -1,3 +1,5 @@ + line 1 + line 2 ++new line a ++new line b + line 3 diff --git a/fuzz/corpus/text_fragment_add_start.patch b/fuzz/corpus/text_fragment_add_start.patch new file mode 100644 index 0000000..5218764 --- /dev/null +++ b/fuzz/corpus/text_fragment_add_start.patch @@ -0,0 +1,8 @@ +diff --git a/gitdiff/testdata/apply/fragment_add_start.src b/gitdiff/testdata/apply/fragment_add_start.src +--- a/gitdiff/testdata/apply/fragment_add_start.src ++++ b/gitdiff/testdata/apply/fragment_add_start.src +@@ -1,3 +1,4 @@ ++new line a + line 1 + line 2 + line 3 diff --git a/fuzz/corpus/text_fragment_change_end.patch b/fuzz/corpus/text_fragment_change_end.patch new file mode 100644 index 0000000..5655880 --- /dev/null +++ b/fuzz/corpus/text_fragment_change_end.patch @@ -0,0 +1,9 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_change_end.src b/gitdiff/testdata/apply/text_fragment_change_end.src +--- a/gitdiff/testdata/apply/text_fragment_change_end.src ++++ b/gitdiff/testdata/apply/text_fragment_change_end.src +@@ -7,4 +7,4 @@ line 6 + line 7 + line 8 + line 9 +-line 10 ++new line a diff --git a/fuzz/corpus/text_fragment_change_exact.patch b/fuzz/corpus/text_fragment_change_exact.patch new file mode 100644 index 0000000..395de4d --- /dev/null +++ b/fuzz/corpus/text_fragment_change_exact.patch @@ -0,0 +1,12 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_change_exact.src b/gitdiff/testdata/apply/text_fragment_change_exact.src +--- a/gitdiff/testdata/apply/text_fragment_change_exact.src ++++ b/gitdiff/testdata/apply/text_fragment_change_exact.src +@@ -13,7 +13,7 @@ line + line + line + line +-line ++new line a + line + line + line diff --git a/fuzz/corpus/text_fragment_change_middle.patch b/fuzz/corpus/text_fragment_change_middle.patch new file mode 100644 index 0000000..139a0fe --- /dev/null +++ b/fuzz/corpus/text_fragment_change_middle.patch @@ -0,0 +1,12 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_change_middle.src b/gitdiff/testdata/apply/text_fragment_change_middle.src +--- a/gitdiff/testdata/apply/text_fragment_change_middle.src ++++ b/gitdiff/testdata/apply/text_fragment_change_middle.src +@@ -3,7 +3,7 @@ line 2 + line 3 + line 4 + line 5 +-line 6 ++new line a + line 7 + line 8 + line 9 diff --git a/fuzz/corpus/text_fragment_change_single_noeol.patch b/fuzz/corpus/text_fragment_change_single_noeol.patch new file mode 100644 index 0000000..f945234 --- /dev/null +++ b/fuzz/corpus/text_fragment_change_single_noeol.patch @@ -0,0 +1,8 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_change_single_noeol.src b/gitdiff/testdata/apply/text_fragment_change_single_noeol.src +--- a/gitdiff/testdata/apply/text_fragment_change_single_noeol.src ++++ b/gitdiff/testdata/apply/text_fragment_change_single_noeol.src +@@ -1 +1 @@ +-line 1 +\ No newline at end of file ++new line a +\ No newline at end of file diff --git a/fuzz/corpus/text_fragment_change_start.patch b/fuzz/corpus/text_fragment_change_start.patch new file mode 100644 index 0000000..d0a6653 --- /dev/null +++ b/fuzz/corpus/text_fragment_change_start.patch @@ -0,0 +1,9 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_change_start.src b/gitdiff/testdata/apply/text_fragment_change_start.src +--- a/gitdiff/testdata/apply/text_fragment_change_start.src ++++ b/gitdiff/testdata/apply/text_fragment_change_start.src +@@ -1,4 +1,4 @@ +-line 1 ++new line a + line 2 + line 3 + line 4 diff --git a/fuzz/corpus/text_fragment_delete_all.patch b/fuzz/corpus/text_fragment_delete_all.patch new file mode 100644 index 0000000..8a2fb9c --- /dev/null +++ b/fuzz/corpus/text_fragment_delete_all.patch @@ -0,0 +1,8 @@ +diff --git a/gitdiff/testdata/apply/fragment_delete_all.src b/gitdiff/testdata/apply/fragment_delete_all.src +--- a/gitdiff/testdata/apply/fragment_delete_all.src ++++ b/gitdiff/testdata/apply/fragment_delete_all.src +@@ -1,4 +0,0 @@ +-line a +-line b +-line c +-line d diff --git a/fuzz/corpus/text_fragment_error_context_conflict.patch b/fuzz/corpus/text_fragment_error_context_conflict.patch new file mode 100644 index 0000000..a262796 --- /dev/null +++ b/fuzz/corpus/text_fragment_error_context_conflict.patch @@ -0,0 +1,12 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src +--- a/gitdiff/testdata/apply/text_fragment_error.src ++++ b/gitdiff/testdata/apply/text_fragment_error.src +@@ -4,7 +4,7 @@ line 3 + line 4 + line 5 + line conflict +-line 7 ++new line a + line 8 + line 9 + line 10 diff --git a/fuzz/corpus/text_fragment_error_delete_conflict.patch b/fuzz/corpus/text_fragment_error_delete_conflict.patch new file mode 100644 index 0000000..17ea166 --- /dev/null +++ b/fuzz/corpus/text_fragment_error_delete_conflict.patch @@ -0,0 +1,12 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src +--- a/gitdiff/testdata/apply/text_fragment_error.src ++++ b/gitdiff/testdata/apply/text_fragment_error.src +@@ -4,7 +4,7 @@ line 3 + line 4 + line 5 + line 6 +-line conflict ++new line a + line 8 + line 9 + line 10 diff --git a/fuzz/corpus/text_fragment_error_new_file.patch b/fuzz/corpus/text_fragment_error_new_file.patch new file mode 100644 index 0000000..f4fbee6 --- /dev/null +++ b/fuzz/corpus/text_fragment_error_new_file.patch @@ -0,0 +1,7 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src +--- a/gitdiff/testdata/apply/text_fragment_error.src ++++ b/gitdiff/testdata/apply/text_fragment_error.src +@@ -0,0 +1,3 @@ ++line 1 ++line 2 ++line 3 diff --git a/fuzz/corpus/text_fragment_error_short_src.patch b/fuzz/corpus/text_fragment_error_short_src.patch new file mode 100644 index 0000000..bfe7b96 --- /dev/null +++ b/fuzz/corpus/text_fragment_error_short_src.patch @@ -0,0 +1,12 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src +--- a/gitdiff/testdata/apply/text_fragment_error.src ++++ b/gitdiff/testdata/apply/text_fragment_error.src +@@ -9,7 +9,7 @@ line 8 + line 9 + line 10 + line 11 +-line 12 ++new line a + line 13 + line 14 + line 15 diff --git a/fuzz/corpus/text_fragment_error_short_src_before.patch b/fuzz/corpus/text_fragment_error_short_src_before.patch new file mode 100644 index 0000000..0a96018 --- /dev/null +++ b/fuzz/corpus/text_fragment_error_short_src_before.patch @@ -0,0 +1,12 @@ +diff --git a/gitdiff/testdata/apply/text_fragment_error.src b/gitdiff/testdata/apply/text_fragment_error.src +--- a/gitdiff/testdata/apply/text_fragment_error.src ++++ b/gitdiff/testdata/apply/text_fragment_error.src +@@ -15,7 +15,7 @@ line 14 + line 15 + line 16 + line 17 +-line 18 ++new line a + line 19 + line 20 + line 21 diff --git a/fuzz/corpus/text_fragment_new.patch b/fuzz/corpus/text_fragment_new.patch new file mode 100644 index 0000000..c87487b --- /dev/null +++ b/fuzz/corpus/text_fragment_new.patch @@ -0,0 +1,7 @@ +diff --git a/gitdiff/testdata/apply/fragment_new.src b/gitdiff/testdata/apply/fragment_new.src +--- a/gitdiff/testdata/apply/fragment_new.src ++++ b/gitdiff/testdata/apply/fragment_new.src +@@ -0,0 +1,3 @@ ++line 1 ++line 2 ++line 3 diff --git a/fuzz/corpus/two_files.patch b/fuzz/corpus/two_files.patch new file mode 100644 index 0000000..dd14421 --- /dev/null +++ b/fuzz/corpus/two_files.patch @@ -0,0 +1,48 @@ +commit 5d9790fec7d95aa223f3d20936340bf55ff3dcbe +Author: Morton Haypenny +Date: Tue Apr 2 22:55:40 2019 -0700 + + A file with multiple fragments. + + The content is arbitrary. + +diff --git a/dir/file1.txt b/dir/file1.txt +index ebe9fa54..fe103e1d 100644 +--- a/dir/file1.txt ++++ b/dir/file1.txt +@@ -3,6 +3,8 @@ fragment 1 + context line +-old line 1 +-old line 2 + context line ++new line 1 ++new line 2 ++new line 3 + context line +-old line 3 ++new line 4 ++new line 5 +@@ -31,2 +33,2 @@ fragment 2 + context line +-old line 4 ++new line 6 +diff --git a/dir/file2.txt b/dir/file2.txt +index 417ebc70..67514b7f 100644 +--- a/dir/file2.txt ++++ b/dir/file2.txt +@@ -3,6 +3,8 @@ fragment 1 + context line +-old line 1 +-old line 2 + context line ++new line 1 ++new line 2 ++new line 3 + context line +-old line 3 ++new line 4 ++new line 5 +@@ -31,2 +33,2 @@ fragment 2 + context line +-old line 4 ++new line 6 diff --git a/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94 b/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94 new file mode 100644 index 0000000..261f746 --- /dev/null +++ b/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94 @@ -0,0 +1,2 @@ +diff --git +coyy froY \ No newline at end of file diff --git a/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94.output b/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94.output new file mode 100644 index 0000000..e6349d0 --- /dev/null +++ b/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94.output @@ -0,0 +1,3 @@ +program hanged (timeout 10 seconds) + +signal: killed \ No newline at end of file diff --git a/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94.quoted b/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94.quoted new file mode 100644 index 0000000..0d8a12a --- /dev/null +++ b/fuzz/crashers/14d09136dc1dac94e936addfbb0c9d8f5efc5e94.quoted @@ -0,0 +1,2 @@ + "diff --git \ncoyy fro" + + "Y " diff --git a/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99 b/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99 new file mode 100644 index 0000000..48bccf7 Binary files /dev/null and b/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99 differ diff --git a/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99.output b/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99.output new file mode 100644 index 0000000..6935498 --- /dev/null +++ b/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99.output @@ -0,0 +1,45 @@ +program hanged (timeout 10 seconds) + +SIGABRT: abort +PC=0x45ef7d m=2 sigcode=0 + +goroutine 0 [idle]: +runtime.usleep() + runtime/sys_linux_amd64.s:146 +0x3d +runtime.sysmon() + runtime/proc.go:5337 +0xb1 +runtime.mstart1() + runtime/proc.go:1407 +0x93 +runtime.mstart0() + runtime/proc.go:1365 +0x79 +runtime.mstart() + runtime/asm_amd64.s:248 +0x5 + +goroutine 1 [runnable]: +go-fuzz-dep.Main({0xc000049f68, 0x1, 0x4d8020}) + go-fuzz-dep/main.go:32 +0x258 +main.main() + github.com/bluekeyes/go-gitdiff/gitdiff/go.fuzz.main/main.go:15 +0x3b + +rax 0x0 +rbx 0x14 +rcx 0x45ef7d +rdx 0x0 +rdi 0x7fa497b96db8 +rsi 0x0 +rbp 0x7fa497b96dc8 +rsp 0x7fa497b96db8 +r8 0x2101 +r9 0x7ffff4cab090 +r10 0x0 +r11 0x202 +r12 0x7fa497b967f8 +r13 0x7ffff4ca574f +r14 0xc0000009c0 +r15 0x7fa497b96fc0 +rip 0x45ef7d +rflags 0x202 +cs 0x33 +fs 0x0 +gs 0x0 +exit status 2 \ No newline at end of file diff --git a/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99.quoted b/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99.quoted new file mode 100644 index 0000000..0a980f7 --- /dev/null +++ b/fuzz/crashers/25ff27c796851c177b0d14e132764968311eff99.quoted @@ -0,0 +1,799 @@ + "_3_b!_1Y_T23C_13eA5D" + + "T}3@BJ(@ - +6yy0_jm" + + "_ft74XE@\n&(_#UTR?#E9" + + "tcD8>1_G_jQJe__1EK6y" + + "3H__brj447Nl5J_3OcV_" + + "1t0_33_Nw_\n__j62YADN" + + "6_01A__x48Vtm7_b_FXd" + + "y_H__WT1z_z___Zp2kwn" + + "__18o_4A4991_dyFDjR3" + + "_w__K_AY6T_2TPuDVrHS" + + "W__k_b_ATr}&km" + + "wc_Q32MwH\nz?24@ePP8_" + + "qq_U*{?_kesZmky4-_cL" + + "mu?|-0xc90F.-1837404" + + "35re$<@khX1Grt6PEg!>" + + "~MpZ-cf6aFkVFzO&JOkc" + + "v7FeEq|)1__1se3x1Lyd" + + "8x5_YY79___6ZNaRIxy2" + + "2xeax242_1_YC6&_@ZgB" + + "k*\n`I^0x5B96dAC6e-02" + + "38-rj2i94H_HHZv2_a_8" + + "7___883vt8jhl0a8nLf_" + + "LbKBN57t5_1_5g9H_22g" + + "R1Ainpy75_9D9ofL2r_Y" + + "D__0H_uO4__0O_mNT{g{" + + "bHnkWX)0Hj02~njkKX8Z" + + "z%Ihp257yLNunoes3LBD" + + "%Pk%TkW4ize_HweE8A\x12_" + + "-0xfc\n#@^5XCvsid_mot" + + "F_MA__L_G51_9_D_s8O_" + + "N_Y51T8_s1__P629m91D" + + "0e5_Bg_3h4_X_O5Z1m_U" + + "f31_I80#rRGx;nx%Gkc`" + + "ZQq%8pkxT9b*)(Z&cqcq" + + "cqcq____Av_lea8a)8H8" + + "T33vN\nzgTj)j_%wz13xT" + + "Z6LgdupD/ke2!n7E-YZ%" + + "8n3OTzK5*T(zZ58JVlu7" + + "IBfP1@TDmG;(!*Hy" + + "<_wK_5_7XAT_z__9rjNC" + + "-Z15_j8XD3U4LU1x__lf" + + "C__otO_rvHp___rwNR_J" + + "X20T_ri1039vri_T~#>h" + + "P8@a&jwYi_$Rv5Ksz5_U" + + "(j`$V_L\nz{(rL4B7Ysa#" + + "+5QC40p?w_V}r&B__%{W" + + "$)8R1P&EanFWd2mOBp^\v>%[{6HgPH4" + + "ahb/257yLNuno+(!cgw9" + + "7b@K~Xg9f8rdsd`\nA7vi" + + "Uy_4ZVZ61_C7_JZvYfem" + + "A_Ga4hHnlAAy547_J_Z_" + + "GwL_vQ_p7__3bl2Q___s" + + "_93m7bFLo1_Lu9bB_Ab_" + + "_4l_7hRI9tV0e!%zOSj3" + + "62)\nzQ*rR14a_8" + + "E_0vMi_vE356GlFv_eUW" + + "l4b_#gUr*IwPf7\x02BwNAU" + + "N{Tre0&7KHK8Gq6W2Jeq" + + "eS(>+{aE$cFn>l9J%6m&" + + "\n_3W7T4d_7_4U_43fWcq" + + "6_cOkaww_d_e_6_Np23E" + + "fi2u0Py_17z_B_3_7j_X" + + "8r8__u3r5_04g5S2qZK_" + + "23j_i_\x03-072376553502" + + "3376.0x93c$kpBb=8yMt" + + "Tbd34bN_X_4OG1F13H__" + + "4J_1PW___gITQb13nAI_" + + "Wv8_sC_0k3_d_475m_rj" + + "INF7_z__JG_u26___ZGR" + + "4_fR_27O_my7Hk_MwDCz" + + "l1g;Y\x14f7F-wEny-#Q_7N" + + "4R_W44Ct{_Uy__($PLR3" + + "jay0@l4S5PR8fS<\nzi+>" + + "HAbL30AMAM_8N1Ck5x_3" + + "9_7y0}*.yN79ZUwT1^Ly" + + "F1n$+&*%_1Ngt_CAcF;)" + + "&$ZFl+{4F9c8b893f" + + "Y7EN283WiOV_m_g_l7f1" + + "3_gf_6I30_D2Ieh_ToEd" + + "2_ot22uO9_f_UeZ0jQ_J" + + "__$cFn[%@&\nz|$$MwDCz" + + "l1g;+\\~f7F-wEny-#iI1" + + "X?l(D;Z$_@^<\nzi+>*}c" + + "F;\x1e_kJL_____19__^LyF" + + "1n$Cy%6p40Ok_k2R0k__" + + "_2_1KQV0W4___lk_K__7" + + "96Ia_fOtn_71_dj_MuZt" + + "Nww_8_zC6_wqKJ_IR0&r" + + "9r**)&\x1eZFl@eghAvH\nzR" + + "krj-L9*P`M-3Z_dPkP47" + + "ECWy_6_Y@YWqKrGihs`_" + + "<05.0xCae4C}?b&`%\x1103" + + "0.-0xdca\x15%\n_Ly_lA8i0" + + "m____CM_7W5_K_4_m_bw" + + "1Pr_11_qbXIy5H8kJ0YK" + + "CyW_W_g7fr_ZJ_68j7s=" + + "W1Nc?DQo<|}{xbpW%2@<" + + "O6f0JU)fFhmac9{UP>{u" + + "5_U8v177HyS_e4Y5_$LM" + + "yq;S\n8j3U4eWm;6*a3u>" + + "HnVf=mg#Q%sK{i;%nIJ6" + + "ZfQzBsRhxx##b2h}___N" + + "4E_Jk4vQX18d_Wi__z47" + + "f8m2B_DCOz723__8_Ra_" + + "L_G___v39o35___32BX{" + + "__AX_A\x02=m@\n@Ie88^`%(=q2}>^o91FPtaKgX" + + "?EskXfTz-@L__C_~?_e-" + + "-64915391010929e0001" + + "7030%w_GY9s9?ln-!2_z" + + "!HljtP!_Xjf___QX521:" + + "DpsC-~V`aJ>)2K@ryP2!" + + "6dWiRy0M0vL*@gS_\nz`G" + + "2E6~3pGOq&;=$JbDmK47O*\nC`~nS$@" + + "*@hY/2e*kN0E;7jK@*Tz" + + "W0\nz2FmwjqM0G-dfMDB3" + + "x5@L4z${TTJ7dzu+teFC" + + "9mUiSr(_;;jrvQ~;jrvQ" + + "~`>uoen9{iXP5;\nzbF9`" + + "-ad8_6s_Ue6201Q6r_4a" + + "_6j964oZE7S_Eewb3_P3" + + "_M1Aid_F64&(_6e+M31o" + + "GlTiV~(^)qux97HP+" + + "_mSNPtqZA#;tf2mQR\nzc" + + "B?N()_IsQU6y4t4Uc9KX" + + "03471e-0xdEfDBF8|S8" + + ")}CwEOz7FcRp}Klf4OpW" + + "u~<6nq0Bfgl~!*wK)cg^>" + + "YnUUS9?\nzCRNTKwkeO_c" + + "{pUC" + + "_cemrZCjR|-)DT&-0364" + + "e-0x5DD9Bf3B6E{8d9Si" + + "TvhB4{eTUGFbTa-IbX\nz" + + "8Lw1xoPPp_ZdIbl_Y3dC" + + "zP1dCzP1RPV_I6f_7__j" + + "@V?i3f_q3TNL((rKZHZw" + + "$>Ozzf4E=Yf*anqqYEp}" + + "_AR\nzL{^n]<${fQ_Uh6B" + + "Rm_BR&t~5pz;5pz+_1{?" + + "*-#T4#$(;pke+8K*1I_9" + + "A_N_8I91_R__p_QoLbOg" + + "I1L54i2G49_e9M7SQhX_" + + "__ZR_Y___qvI_E__8SkR" + + "_4q735NY76_1_vX5c_4_" + + "tr)n*<7_ya9R_h__zGQ\n" + + "mu|\nZn&;)e}66_;iE_u-" + + "smwSxfyE7_JA!\x17\nCaDq^" + + "b_k*BDjMy*-355169092" + + "60194020693739994856" + + "9341246131.-06051556" + + "21232|^;-5220OJm4}W0" + + "Lw()3OOY&fT\x11MrlC:TkO" + + "7\nzWVc^__qk__F_p_C_K" + + "_re-jzNm1d+r;?hB3VC+" + + ">h>SB9|-906884514361" + + "6)|\n\x1fWVkSk\a^K;NKZL(c" + + "0zjFD)s9i7FY7DW#K^KP" + + "^{6i8lQ_yoeC__cGW8g_" + + "h;(t$e?;>m@<_" + + "j;z{x_|Hzf&NnB2s)UK$" + + "gs4~;$5__\nz%V#3D9@E1" + + "QNOb5UL}_m7Y9EBtz___" + + "__r_Ah6g_3__U64__1_h" + + "rTLecOe6_hbQ_ya8Ttk_" + + "__5IrN0Xg7v8__KYcR98" + + "__k8GVf1f_6TQY_i8+}u" + + "&a}K`&cU%lpy?^BZHUO(" + + "TE4MzZG&hv\nz)\"F*___Q" + + "BDV_CEe<6f\b7496337.0" + + "723^%%m7*+MEwvjSRh#o" + + "dK&cU%lpy?`{7NcR^sUE" + + "*+(v2\x1e\nzF\x10fBmxj2s}!*" + + "-mJ%K;2$0V^?__9c_qc_" + + "__^hIvI!>2_\n;H8___U2" + + "f_J6n08YTo_uymEvB0_4" + + "_l45_qnVJ_Co_lB2_2OI" + + "_k91xDHc1_IC83f0B03o" + + "3p54tp__Op7_i__0WA2_" + + "_b_1__=%ZF_3Mg_k00jQ" + + "_s7q`zdFVyjJf#&^\ro+P" + + "_Y1Q{$$Aql8VqX+#=0x6" + + "77f4e6c01fD68Ea0DceB" + + "9DAF)lx!&wB#{$tlb&Sw" + + "C3E~G-pKOFXRQrRSk\nzM" + + "t}Fa|4IQc;N}stu@1BVj" + + "k>`8grvj#WVz9k#>2R9Q" + + "_B7A__S?~JQZdag9deih" + + "!2aWVBKyx_f9\nzXKhuKy" + + "*^('}aM*}PexaGXqeZCm" + + ">3y>9lL0AoF2`^hNSMC9" + + "B:jT@\nzjA%viojl=gm6?" + + "1mPDg-)fy98Cb}Bdio_{" + + "zj|D!cmK6n8UKEV" + + "ec>#wrFAa_9Cbhb_cAb7" + + "YLywLFY_sDcdz_3a38eO" + + "_)YrdOPgay4SxQ!G__1_" + + "2kQHjx_Mn65__A9P81m_" + + "87O5_L_d0f_7edyP_24_" + + "teHR6__0RPjw4_9J_Nw_" + + "t60s5_q6C_85a#^PISz!" + + "W;;(=9W\nzC3sTH>d}ErT" + + "r;c8LY_P{&pV_`d" + + "w_)zTm>k_g&Ox__4goy_" + + "XRM__c4E_$V%Qf0___49" + + "_2___e_tu__E__b0E9hJ" + + "_9XK5WQUKG5Ecaq6B6_6" + + "9_E__6p9RPB6_Emka__o" + + "6cfA8-!ZtfnOT~DwbQAM" + + "PmaiNnPYa}E\nzC0qUqV-" + + "JtW?*6Xi2qh](y1hty1h" + + "tA2AVv-@330x3EAA6f" + + "9DEE56BBB60FbFbe0045" + + "37037753354011647551" + + "32240702d)C9C2b\\Dl#4" + + "Wp`G3YVXS2vODOKQy[_4" + + "49D3_5e7y35_W*FDIj>(" + + "*\x05%23c&p257yLNuno+^-" + + "_d'[K~Z__su_k\b6]\n\x0e??=}+>^{~\n@" + + "Fd\n__6q$NpnPl5QlqsKP" + + "0}EskXfTz\x1dZpBlsI\x15~'B" + + "4%rD_!_mSNPtqZAI7_6_" + + "__cI__1J__3K!\n!<^*Non_1wm3" + + "E2t\n+#O2B3r__R_0m\x16Z@" + + ">A\n_F4Q_F_s__Ak__Vi\x00" + + "BPBy23__TTu_3___1_L~" + + "9_C0iy{$$Aql8VqX++;\x06" + + ")`D?__n7q_Sb8dl4_o4R" + + "_HVJ8C7uI841_O7X7_0_" + + "xNQfL91_Jm__ywrvn_XT" + + "_3_18XOfyA6n8nL__u__" + + "4vSI43_m\n(K!Y~T&tj7%" + + "3ZE#@\x01{L:{lsr){Klf4O" + + "pWurL4B7Ysa#+ \t?w_V}" + + "8_hKUj8hit1M_07ncWm6" + + "hNaQLV7a0CS__Iq&iM6x" + + "XyF_RG_42_lv3%{W$-68" + + "KH_2ee899k1_vVTb7cYt" + + "kpO8f_778Q1_Xx9Ep_62" + + "33p_4__Q7KHK8Gq6W2Je" + + "qe%<->\x1d0m_7Ei076cw_6qK" + + ":Q&{*|SwmSXE-ywoYoZ3" + + "U\nzdb4|Fn\"qvN3BM_ZO5" + + "0npcgih6OZIJ_xxUgK2z" + + "00qV_V0GnS_2_D7hlP0R" + + "_i__0B_1__oK4__JLC_l" + + "UJ_gVJnC_BY_5___C67_" + + "54s/c8LY_P!K2mK2m*Zw" + + "_@w_\"]1My9_2_4I_3_Qn" + + "__o_SV_B__I_C62__cTw" + + "_BAcp9RCvm7___JRjcYH" + + "msx_kC6um8U_m1v0Xk_g" + + "JV$__\x00ZtfnOT~mC__I_D" + + "iEW9_T2TosxH_8_lB9Pd" + + "_lrd3PP_hjx4892wZIt_" + + "h6geC311_Zn4_ea27MtG" + + "1rkopd_12Q1Cd8YB01__" + + "d63JY6o_u96}&'_F_o_3" + + "_h0D0p_MM5%t1lNI__u2" + + "m___2__YiTwc_m_kl5k_" + + "M_snSG_M_i2Q7ifG_3NW" + + "N_S1f4___u#H5\"ZKfnoI" + + "M__M__sDF8_5_txk590M" + + "W8BHCn3I_2_1_bA6X981" + + "4VBfQ2fV_____6_O_5a6" + + "55__9Q_,P8OqnoP')));" + + "Y&S^Fd_9z4A4o8_KZ_4c" + + "C0x_yjwYjjRN_S_J__A3" + + "205_9fSX33TI_5_yh__5" + + "V3__t82QrJV0t_Ft_M80" + + "3_t6_G2k_3__x__N.]8W" + + "ej_q`_oO3Twk_E_b3HN_" + + "4_d1_2h_6D__6r6_12M1" + + "V_CgZ_J_27W_X_S@YWqK" + + "rGihs`wF9Eg_17EXDrwL" + + "_HaI_qht_E48_Kq6_iN4" + + "u1aW___04Yd033P66q6s" + + "2_P_520q_3_8N___y02_" + + "lsp5__k93v_MlUb_0B__" + + "9$-9047.-076021422Qx" + + "|Shj(@mOGi-V8X,``wqW" + + ")r%+?24e-0xa7EAb81eE" + + "A446FE785a93cccDAdAC" + + "dd4Ef3 joDa!-0x3a1`{" + + "CIT;J4sydrLxNWzgUBvq" + + "K&gHOJyAP#%;@_gK4m_3" + + "2Xg_7lcsP7_1PhWGJQl5" + + "GXKF@8~7770;01389234" + + "}\bmI&$v5<9B1$+>xX)iE" + + ":u-" + + "0x4adbfd.07437477730" + + "40753320463Be_Zh7H_L" + + "0ojmJ-L7F\n;zFE;pV4HH" + + "_WmO_;zFE;zFEzFEG_Ns" + + "v_G1m4W8_DGV3C_76Qmz" + + "FE;;zFE~*TJ#Y>F`M)iV" + + "#3k0!533190380024071" + + "43430841255690903.0x" + + "cI2@aTBY6Le~k_38I_J1" + + "02__X_4i_W_4k75as_a_" + + "R__8Z7Q4__8Gx7TL_e2_" + + "Y8buy2c;mm;0dvr`0#=G" + + "Z\n<^_W_SW9A4K4_VfN0I" + + "4yYD6WDI2j_5O^>vm~I2" + + "@_%_n__B_s___2___g1d" + + "pc___mYs_R_09_XgI_X9" + + "_D_}\x03<~wkIj0>_AP%n95" + + "V_V0V47eV8NN61V#*\nvV" + + "kRz)E~iIs*)1!V_" + + "gxCubJ5o19\nz^y`05032" + + "24417270214550236203" + + "001525404430576>+sKU" + + "rDep!F5A*^DLBShsp6!+" + + "cwX9)&)3e_k26_k+|_88" + + "_h90_I7_gGbB%3&%KSpd" + + "iN0>xk9!c\nzDy`!OH~DT" + + "@&|^+%4ZvU9_0d00g0jt" + + "___QH__p3_3_7ldwx4I_" + + "tHRX_D_q_zC48_6gT9_T" + + "fABh_N_h_0U2hnfRwP95" + + "CMQiGi_d5__KSTk4_B__" + + "_L:aom_a_9HsHp_Gvt_M" + + "_YH4__Pt5V_OK_9_iC_2" + + "OAC32_0w_3_A_U1v__bl" + + "m__meEWX__5JvTmeq7Bp" + + "_2_4wgfyf>T2qX9tzqCh" + + "zyU07Q5O)7pHe8DLN2bp" + + "\nzdlTMyHOJqRKS{Ok~-0" + + "xfd2FA9K6aa|-013e-0x" + + "43fb~P!f6HE-YeYg|0WD" + + "J@d5_mH_Xk7QkFCJ);Ov" + + "bo(\nzM*o?!2#lADbM8" + + "kdZGB*;x_UwD80_6v@^4" + + "gw!Y?raCf7DLTZhN{@?Y" + + "moKqE-ny{_>M\nzPW`y5a" + + "-%KZOZ(LC{iJ26YFd!WB" + + "BUTJ{ #XaWxI)6ed<_4\n" + + "i*8YS_1__71S_13zVW4>" + + "p*\x05%r23_EV4NH9m_|{@j" + + "803_03R16_42vA24__Az" + + "_m_8R_5s9xJi70A8d_Uz" + + "c_____buVbVkkbR11rmp" + + "tI91Pq2_AW_O_Sn_7sA_" + + "r9_2_1_Dt__h7w__sW_j" + + "Rw6_a(!_d*@_n>e8--5." + + "0x02Az=tzd?y3cy;q1x!" + + "|>1bX87YV_Fs9KD8__k9" + + "J&j;-qg8O?hlGo~C3_*^" + + "_HQ&W~rN11_5___8i7_9" + + "D_NwUL_xL_Hz_VvUb4_C" + + "F4Us49d4T__cvzW_W66E" + + "1_tWN_68R_4J_\nzjRoXG" + + "hq}bbt5OjoNEaRt9SW57" + + "9M@O#5__{I?9P!pHGx8+" + + "mS!>(NX4brs~1S%~)zzf" + + "OF(+Ek>{e>P?F^u#}-05" + + "61730746533775763555" + + "16521612.0xB;QQhLcrr" + + "TmcVBJ#'%$|'^EyGpfE6" + + "zi&UUIXy1e8fo^\nzsdeU" + + ";ucX8564j_tA___F__a*" + + "5)-5?w2k(W2c*(v+\v`^\x1f" + + "0Yh}DpOn)yEHK;aai|7d" + + "\x1b@!*{c%0x1f5e{\x1cP7XC3" + + "`Gtv_4vPhC&G({}\x04soxR" + + "\x17|OO8:U32O6B6X4cu}va" + + "wOLA8\nzUCsnRtC7@}\nzJ" + + "575q9cPe?a0DRDuDa})<" + + ";k)5jvi}1YR@iI:_hD=>" + + "sF&7Wp0@_Q___UahFp_A" + + "J_B2_#uQ8l(\nzP$=UTG!" + + "hf$iSFO~fxdOLf78q%-5" + + "517e-0xDACAa5ac3BEc2" + + "1-enFbWUzJ1GphTCI4\a_" + + "_9_0xj_Z_BDM9lMz4065" + + "p_O(9IgBR5F8ark@QBWd" + + "Ec\nz#zwo4Yk#W3G2@1tN" + + "zg\x11lLP}&Kla#?&}-0105" + + "42425517102643570566" + + "0707110770713^dg>AOG" + + "\x06P1\nzhJVkbt|oi&" + + "wsG)`L6)m8D^F-bi%B9F" + + "k!@mOGi-V8X@6z3u:_{}" + + "wqWEJ;-7jfy_2PU4le_B" + + "9AM1_m*=VJblm=A_Q___" + + "_GXYtVW_@93a$yiNR_\nz" + + "N*tPjf$n}UNI)oYV<>TQ" + + "zBo6:Js6jYKI%9xd0e}B" + + "Z7R)GU!se_DK2rXrAU6L" + + "i*zJNk\nz#OhSK^H=?bSi" + + "&_310_gV4_ZaQ672rP+t" + + "B(6HGW@P_1+M$;(a|*2c" + + "pNSek=YCt0xna?)V|}\nz" + + "TrlxT(K!Y~~IXN2%1_8K" + + "qL__a_A9d'@{L<{lsr)3" + + "e68670266)*xnPKtF8N_" + + "ai2o#snfgL\x00\nza6(zTA3" + + "VB62Y($=87Nd(yuJH&$z" + + "_{591719536212719920" + + "03031114166;EouB_69G" + + "___75_)+gC34F02W_29+" + + "|Br6D$(fQ&aw\nz--#+MO" + + "#x4xiRrjERDA?xBfD@Aa" + + "PlspDCD~m)QT:JS6a}X`" + + "|BZPaBeJ2pzNE=Uv|7K\n" + + "zn1:v3M4?6!&5zU^ey:z" + + "Q|mJwNTM3ynPRaeEP2%&" + + "!+3J78>Uvy_v9r_" + + "JiJTBCSc622_w___1y_4" + + "FiT7B83_0DF99__fGe_n" + + "l6c_k11c7_E8__nwuMe7" + + "6_T2bz_W2lasxvM_GQ_y" + + "8ydFI2s5T_@\nzcRGVQ\u007fJ" + + "oV_dc8b4_d3__G4FZEY_" + + "70_pCWAZK8iHL__dsu_2" + + "Ia982t89_8OFFUHPy_No" + + "WZq45_8_VUn9D9_4TB5v" + + "3^a%8e;7hmY!<5988828" + + "5682840_52>F%P3kh+(X" + + "pJvYZi2+{TpjXm2?_S$k" + + "Z^(dN\nzk6GUPl;++}+{#" + + "#wFOVmHwFOVmH>IJ*$$A" + + "CbE1kae%&[&%%%hdcWBJ" + + "_hl&X@eHeH`oP+\n7Z_i_" + + "_YZBOPpf2_r2qI6r_fo5" + + "4dGLr5x5R_Yh_K05__3_" + + "_Lzz_N_7dh09N_zn0s_b" + + "N____Rs6eZ_7__1QJ1Zz" + + "EE(=$$>w$<" + + "-v#[-Gn(S+\nz3;|DiLSt" + + "Tzl)8WRlm);zFN)d__p2" + + "648*<~Kk~$VJ*5%cv8P1" + + "#!#\nzf90BhxfTB1`>MK+" + + "{OAn!~^{cy&yUeV3RpRs" + + "^>=|_5X\nzX+e>_7_t46?" + + "7c(6BMHwnKprk+Z)v4I=" + + "V4BAvdR#Lu7_d4gJ5#js" + + "XEF%=>-0x6de-0244371" + + "7715632404362111\x1eqv7" + + "*_k\nzM%5WM$*VouY7" + + "D@*jCa6\nzYHwni68{BID" + + "B1h`1_dv_336C79q_0_U" + + "_w_fuu_ILAt64htM1uw_" + + "Kk0_g40It8_niU64u_r_" + + "c39Z01yt__j8jel_D_yN" + + "942X_qq_329KSc4_N_S1" + + "D5+}g/\nz?tkqDHa-)6V6" + + "AhB(WLtjSxh*sU80Puaq" + + "7Tk7cmKFcHTViv_83_9p" + + "TWQf_ca7Cb5u_C_n_c__" + + "7___33_y_B_t_H_s7__9" + + "47808lc85_cP__18cg_y" + + "kC32Rq_2A_E_m2jY6NCC" + + "c__;xJ?m#;4p*&yNI-c{" + + "{>7D@*\nzYHwni68 B(yt" + + "hcY:j4tKRBK\x1cwpq\x1cEe5*" + + ">UjeSbn=Z@_V{0xa.841" + + ")IDB1h`wTBv8Vf)\nzGUa" + + "bKI^vx;~\t(2w)4pbFy+)" + + "=|zXZF^CRCWGFRoqrAlx" + + "T0y&$j5q6SnOOU5o0?^&" + + "&D6Ph}~7v5_67a0wI_k\u007f" + + "b3rM&_mI6Cils4_ZY9_U" + + "0_9_Z_2tI4L7hR__5_9)" + + "_kI~RXoFy;Yk4f_q_J_0" + + "__3nzSYk_O3_lzL71__6" + + "QHTg1__0_H_P_4G_h_X_" + + "B8_bV12AlO1_WP_0T_m_" + + "_MpAl506U_BI3W4Ojc__" + + "!9pX9GG#B*F`(dA\\ql_Y" + + "k___kGgeO8bP_U_bD_3_" + + "5N630_2___w4vUajZAG5" + + "9oY_AQW1ykLbt_kv___w" + + "P______4r7KG6_xX_4!K" + + "dikqKoTHqzsyanCZ(U5n}\x16w3WG-K8G`" + + "dA(D!`{WZzW@39roV_pJ" + + "_uzvkz_i5S9546Y_437Q" + + "tQ3_858kB_d@>)~^xl)'" + + "6BMHwnKprk~_b5_gQ_0_" + + "_Yd6_QrsY_1gsU2b_8rS" + + "xF__P53w__93d4Zc0_d`" + + "sa\nztO}`-0x30E.-0343" + + "7;#H(Q==}2UX=uGsR5E_" + + "P_74__zQ5yLN7_juB_p_" + + "k_en0_4t_51sS_jbI__L" + + "_V`9_P*rcl2Xnz%4ZX#Y" + + "_8&$m~RIyIW^MA=9y2\x06`" + + "Rz\v\n@%{fbRe.3oa<}4EK" + + "VhQ%zS`J2GeEVrwS_Q9c" + + "_eR_-C25Uov{GHoRv\nzf" + + "FHfa&J<>wlv(G^#}8A+}" + + "G|@AT( >18m7i__3jk4d" + + "Fs8_HD1_zA_eG8_zO_Kg" + + "_DPB_i70_D7_W0dk10_0" + + "_Ss8__R60sU0S__M__71" + + "i_4WB_sS4_NqVv46*)z6" + + "y$+\nz9qA\\___43_K__C_" + + "9K+>$___u3a9_2`W$ie0" + + "HD3Mi4;`_61ah_D_sa\x00h" + + "x2m9_(^!?v6x__F_5)?9" + + "Pb`H(\nz<8h|0U)ScABl{" + + "&?sOhBJJyFPUOt7+$&nj" + + "*66201_x5HdAVnrQc9__" + + "_3g3n_OAfql73_K7_TDz" + + "CR_9__p_0mWx_uH2(+UX" + + "B1_UZbG@s_K&)51_vPKx" + + "Q4mI\nzVsBl7$^wYH(tS:" + + "4B*eHGsefF8JLWa`(zZT" + + "0?fpiS^s0Aw+t2UUQ8M-" + + "7__={$?ErTr;>;_c__T_" + + "5_nx_02f6LnN_1?6j8_k" + + "j^3BAQ~_Z89QV_F_5__b" + + "54B9ODQyM_8_wzA_847U" + + "S2Lm0NYr27y2e8_l8^iJ" + + "Voht|)uQ\nzp@Zi4b(|)?" + + "|\"4g3o(5R}Oig)4g3o@E" + + "dr6G~gZ__O20}$\nz\"v8H" + + "0bwS_8<(;%5A7DwJe@ %" + + "KO>wC&&NuCjN8iAHC\"|C" + + "fS+kf-\x06))(\x00\nzud7R9Is" + + "@q9H$%|irWi2&_<&=4kke7cK" + + "nH-x\r$Mg_!_AZ_9__VWi" + + "_qebY9_X_l1_uK4_v_Yp" + + "u8nl2_fp__7O_Z_JG91X" + + "c\x10\x00__r2k3_U3_oCGAJ_t" + + "_20_j__68FB9_S_8aqVT" + + "_9+R4)Kv80EB__JL_h9z" + + "_e_p482__h_ZSQ__566_" + + "_p_V_@4-7\ngyzbMDhd4E" + + ";9;gyzbMDhd4E#B$j(Y_" + + "_N/-z05T!!YZ=j)t\x17KKg" + + "Hs!H_s_|8VC%~+HAY-YK" + + "*Nx44gH\nzaUG54Wez*8O" + + "___7AZ__6a255p1_6P4_" + + "_6TL_v6I_1r_j_eR7G0_" + + "NB42i532wj!YaxNS#\x04Bj" + + "N)7?2M!#};C#RPNionql" + + "K3@6a)<8_@\n}w)~mquN2" + + "{wE_&PLflsn\x10VmFcMpw|" + + ")iba8d7J0}`G17K*U(Sr" + + "P0j#OvO@\x14N!OT-\x1b\nzzEp" + + "KkNa8QpZIp2k)(rxnM^3" + + "t+Fh8Z;$R8iTkT\tKuYhY" + + "LTpiVpIpFQn$BZPaBeJ2" + + "pzNE:Uv5dkWB\nzH>Op#R" + + "j)ipw!4p3Y7fh_NuH_A_" + + "s_{+-<~&dbS7P#JZ8VZe" + + "O?d+fmp|Y6KSr1kp+tQm" + + "\nvo8tug5g^NNN;c" diff --git a/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578 b/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578 new file mode 100644 index 0000000..112d74e --- /dev/null +++ b/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578 @@ -0,0 +1,4 @@ +--- 0 ++++ 0 +@@ -0 +0 @@ +\ 0000000000 \ No newline at end of file diff --git a/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578.output b/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578.output new file mode 100644 index 0000000..a71651d --- /dev/null +++ b/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578.output @@ -0,0 +1,16 @@ +panic: runtime error: index out of range [-1] + +goroutine 1 [running]: +github.com/bluekeyes/go-gitdiff/gitdiff.(*parser).ParseTextChunk(0xc00006c050, 0xc00007a000) + /home/bkeyes/code/go-gitdiff/gitdiff/text.go:119 +0xb95 +github.com/bluekeyes/go-gitdiff/gitdiff.(*parser).ParseTextFragments(0x0, 0xc000078000) + /home/bkeyes/code/go-gitdiff/gitdiff/text.go:30 +0x1c6 +github.com/bluekeyes/go-gitdiff/gitdiff.Parse({0x510660, 0xc000094570}) + /home/bkeyes/code/go-gitdiff/gitdiff/parser.go:40 +0x5a8 +github.com/bluekeyes/go-gitdiff/gitdiff.Fuzz({0x7f18e05cd000, 0x24, 0x24}) + /home/bkeyes/code/go-gitdiff/gitdiff/fuzz.go:11 +0xb8 +go-fuzz-dep.Main({0xc0000c9f68, 0x1, 0x4d8020}) + go-fuzz-dep/main.go:36 +0x15b +main.main() + github.com/bluekeyes/go-gitdiff/gitdiff/go.fuzz.main/main.go:15 +0x3b +exit status 2 \ No newline at end of file diff --git a/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578.quoted b/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578.quoted new file mode 100644 index 0000000..6c9156f --- /dev/null +++ b/fuzz/crashers/54204a6026b8da1e1200299dac2eaa56e0490578.quoted @@ -0,0 +1,2 @@ + "--- 0\n+++ 0\n@@ -0 +0" + + " @@\n\\ 0000000000" diff --git a/fuzz/gitdiff-fuzz.zip b/fuzz/gitdiff-fuzz.zip new file mode 100644 index 0000000..b3c9e40 Binary files /dev/null and b/fuzz/gitdiff-fuzz.zip differ diff --git a/fuzz/suppressions/4c240b600e5010de9675eb9e90a48a6917f98650 b/fuzz/suppressions/4c240b600e5010de9675eb9e90a48a6917f98650 new file mode 100644 index 0000000..e6349d0 --- /dev/null +++ b/fuzz/suppressions/4c240b600e5010de9675eb9e90a48a6917f98650 @@ -0,0 +1,3 @@ +program hanged (timeout 10 seconds) + +signal: killed \ No newline at end of file diff --git a/fuzz/suppressions/a596442269a13f32d85889a173f2d36187a768c6 b/fuzz/suppressions/a596442269a13f32d85889a173f2d36187a768c6 new file mode 100644 index 0000000..1f19152 --- /dev/null +++ b/fuzz/suppressions/a596442269a13f32d85889a173f2d36187a768c6 @@ -0,0 +1 @@ +SIGABRT: abort diff --git a/fuzz/suppressions/d940c6ea7774c8da1b8d4bb4504f068133f885f5 b/fuzz/suppressions/d940c6ea7774c8da1b8d4bb4504f068133f885f5 new file mode 100644 index 0000000..990b704 --- /dev/null +++ b/fuzz/suppressions/d940c6ea7774c8da1b8d4bb4504f068133f885f5 @@ -0,0 +1,7 @@ +panic: runtime error: index out of range [-1] +github.com/bluekeyes/go-gitdiff/gitdiff.(*parser).ParseTextChunk +github.com/bluekeyes/go-gitdiff/gitdiff.(*parser).ParseTextFragments +github.com/bluekeyes/go-gitdiff/gitdiff.Parse +github.com/bluekeyes/go-gitdiff/gitdiff.Fuzz +go-fuzz-dep.Main +main.main diff --git a/gitdiff/fuzz.go b/gitdiff/fuzz.go new file mode 100644 index 0000000..7d813e9 --- /dev/null +++ b/gitdiff/fuzz.go @@ -0,0 +1,15 @@ +//go:build gofuzz + +package gitdiff + +import ( + "bytes" +) + +func Fuzz(data []byte) int { + r := bytes.NewReader(data) + if _, _, err := Parse(r); err != nil { + return 0 + } + return 1 +} diff --git a/go.mod b/go.mod index f35826e..ba23a02 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module github.com/bluekeyes/go-gitdiff go 1.13 + +require github.com/dvyukov/go-fuzz v0.0.0-20210602112143-b1f3d6f4ef4e // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..f87b8e4 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/dvyukov/go-fuzz v0.0.0-20210602112143-b1f3d6f4ef4e h1:qTP1telKJHlToHlwPQNmVg4yfMDMHe4Z3SYmzkrvA2M= +github.com/dvyukov/go-fuzz v0.0.0-20210602112143-b1f3d6f4ef4e/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=