From f24dcc791185cd97ac8594ad8b6530847dc25326 Mon Sep 17 00:00:00 2001 From: oleibman <10341515+oleibman@users.noreply.github.com> Date: Fri, 31 Dec 2021 13:43:59 -0800 Subject: [PATCH] Another Undefined Index in Xls Reader (#2470) Fix #2463. These continue to dribble in regularly. --- src/PhpSpreadsheet/Reader/Xls.php | 2 +- .../Reader/Xls/Issue2463Test.php | 20 ++++++++++++++++++ tests/data/Reader/XLS/issue.2463.xls | Bin 0 -> 37376 bytes 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/PhpSpreadsheetTests/Reader/Xls/Issue2463Test.php create mode 100644 tests/data/Reader/XLS/issue.2463.xls diff --git a/src/PhpSpreadsheet/Reader/Xls.php b/src/PhpSpreadsheet/Reader/Xls.php index 11d5874d..5f96dcfc 100644 --- a/src/PhpSpreadsheet/Reader/Xls.php +++ b/src/PhpSpreadsheet/Reader/Xls.php @@ -6941,7 +6941,7 @@ class Xls extends BaseReader // offset: 1; size: 2; one-based index to definedname record $definedNameIndex = self::getUInt2d($formulaData, 1) - 1; // offset: 2; size: 2; not used - $data = $this->definedname[$definedNameIndex]['name']; + $data = $this->definedname[$definedNameIndex]['name'] ?? ''; break; case 0x24: // single cell reference e.g. A5 diff --git a/tests/PhpSpreadsheetTests/Reader/Xls/Issue2463Test.php b/tests/PhpSpreadsheetTests/Reader/Xls/Issue2463Test.php new file mode 100644 index 00000000..902424fc --- /dev/null +++ b/tests/PhpSpreadsheetTests/Reader/Xls/Issue2463Test.php @@ -0,0 +1,20 @@ +load($filename); + $sheet = $spreadsheet->getActiveSheet(); + self::assertSame('bol.com bestellingen', $sheet->getTitle()); + $spreadsheet->disconnectWorksheets(); + } +} diff --git a/tests/data/Reader/XLS/issue.2463.xls b/tests/data/Reader/XLS/issue.2463.xls new file mode 100644 index 0000000000000000000000000000000000000000..1c87c72f6606743d3c32eebd25f957595b592bbd GIT binary patch literal 37376 zcmeHw2UrwI({L|wL2{HJEI|b&XGJ6$kSM_jB4G&MMXu7 zC?1A0qNf-T74gt;5>YCZBS5%v~?ALvS zDBEx(iGFb8kc<$X2FIg#unL0n91aF~za!xoP`%s#MH-N!Lr2O;qe(%RW$z#fBtu8& z5&Z6xIt||lwZI;M(vbo}LD|eShCeeYCN(;3dUP5ij+w#mXR*>5{}Y=RAwx6`%Ww(| z&kc@fs06U8NQaP2jrdk4zAK4xwZyj@QbU|P{CVN+0<{s;n;_vqlv_f48x!A3@J&O9 zi8^-)j4d)i_neD8aP^u^PiPp84bxu4Jwvg$6{A_dluTZ;!8wdV|^ z^pP~kiHuE+O)N}IY@*CvBg}X}gt>u~5nL(sMb1wSVa7#@7BWV%sGp#am5nGJfHA3o z&|G6`DGD`iQD-y=*&!5#MH$54NyY^u%m_q;xhof8Y-tQ~N11s<0T(M|4j-s0TyGFV zxY8hoNDX&nfrg4QBU>QKj}T3WrMtU;sS_Fuqfx+=SD(+9SD9cfT+<$H2mRBG(Qbw@ zIAjJg0clL&V}o2lTRdz8vJ^UFAmxTipf-tGW_JRN(H*l484q*Ar0ViSC3d z2&?0Xj;&5adI16&09MCu!eF!;spGEe;1~+ zT-7`AA)73o8_ys-Q6)I8E~|FWnMZ_)_JJvbRq&)}}G zLhj5r}lo1qHo zfDRyQAwjW;2+2x@jVCfQja|9lfh=PKDP433X~K!H3^o(aaDPTd zr(`nWtOlw^%5XL)4bG8Y@$rCmw=7kJmbLP_%Ggn*r2)od_7t zSga#htjVU9E;d6V;k{23;en+@awz4@9F}-y9<0*^8C?7`HC*^UD5BV{QfTJ{7=hs zl;8_viPB#uy1*am0)My*{DCg;WP3aFCFSYUNuE6f9dI_JoWHB8uI{tC50WDLMU{__ zk3VU6(hy0J@<{XWd^TCltMll8fCFM9?Oz^_MeU!oLs=gFCJKf_ zL*96V={s4T#KSNl>BtH2421IgcEVHm!o5C8hk{q+;rV(a?FxK8kMC4C)aB8KxB*3e z(r)>BD^XR|>Z1kvC&!}_uRPEv^-uN-zdT?6dW7C^e2UNyMNSPK{w7S|(Qv+g)OdJG zc|gN#j)BlrRpi0&fCHX?QzG$kR6MUdw4C7qwRzhrq4DIQl;_Jy!BhEC=rgG8!t`kfW%2m(%Jb;+o%H~%NTa!D`M~9~eDjf=*Plt-9sd#{-NJRf2N4kni=Y9c6(^YAJr^rd*p**G| z+%Amg$w|cn54?3MFRr}=9j=_6=s*Q=e0lPd*a zK&1QLfy+owh;-jOIz1!Oeeb{przeth-#dCeBhr2EKosoflGxdI-#ZW`>j{zWd&i(> zM7r-CxN`PHlJ0wl(K905_l{A|h;-jO#v()j5a-#zO9Q^^0cZke1!D)(5aS*Zc*^dG zn8Mi}5b3^m`uB`T_q{WqXGFU1oq;_gBHBAEDAyfxARBGYcAq+QY=34{{4Fn zuXkkOT7+?Vd3hW%9%=>gV*!pA-jEZ*@j_(sLO38nY`Ju*P=f$Z3WYC*#D)W(!WTm< zKxt`dC!yTk-8%_|aa5r&jw%$!aoK^Es8?ubI7M2ISWWRXz{#iah3ZViMuZ65D2rEj z{hPmph)~tz1VjXV=I%aSJQ2>NwR|G~{e4DN4+PnT1{cw9!hMF-gOS}2bGx1p;kb8C z#J(p)sFwpv%D8X%+oQ~hY*B`6F`dVLkLy!bo_H4LRAmMce(1}IZzRyI_q<|NCogtqOHiKn^E-X z2o-32ed1UKk3;9OkzJNuDWL{2Wr#f3+4N^vGCX5rnQ2+J#qOC41tY94=nAH|H1la;@N0Z*@&?;lWy1uTiPZ6&lmTIXVaI;MvSEm?1qi7rCsuG zYHAYCMu*BqjHM0khK;bLUGnF&t`*Nlm&!(rrCE2wM%dCW`5(XiT09#)DjPADX5S4P zVN1K@U*CLCJR5z?#;JQtV*nec9$1>4{nDLX^i4l18!?t<+6^0FOS7~8u&+>jYYeDt z#8{eHH*AD0&Cb4|p+P(wLn<3FmS)in8(~Ycv*+B27te-4Wh2JYY`S41Y-x7(>(8`` zXJbTVBgWDkx?v-1X?FHIuPznGMgif(8^phEdQz^N{W!8+UMmsu$v8_A1^0;)8@bm? z1;_{B69tQ+5;dX_6}BRTUgg?~Cu%An3id-K+MhyH*k;HX7;#mnO4?sQ6s(0x)SN<8 z*g~Mmr;vC_2MCCQZBU6?QiuxM14ISZH;N}ZP(TzcflAbtLR7f-A@aOulsKYvWCoW# zFjy zP*@nEi$HQB&`Jqq$O40VOYcNxY%;@}nUYdW&!fnt&5;MW65(br7A3>2p*I|*z(-gr zJb~|IK0K-L-L(u~DiY#JMM6BONN6Pl$p`04a*F8;QBkBNfr&S$Bo#i*~fUkd6BpwyA#(4h_+@>Mg4d*4_zgI~icUlwXuQEJF? z6gt%q<)sO^Ah0GdA}2j1IxRYjl`(@6#>~korjHUOCE>_XK_gHOBn;!ePb2!D1%k`~ zori%qIbaWX(!uL}+}T|7l7qIvRC*MP1%~P>N|&a~k%H877JNia6^ABxw163pmJ;MU zL8NIkGdeCQEr9`Z1&W}ODxlfXAP~0wBoH(K1SEq7gbBca@d=wolEbDb3zCtJaHWJ2 zOfrOsgYTmfR~18?^nYCt=eTb@@(3D&iQ5Yk2Omf!t|o>!=?A+YPTm?w5X2pXiGwes zI0Q*`F~qSyBzsI&SS{FU9rNj6PY$A;B|#^M%m5=`Lf7N$=`IRd5?|fQ8py9LnJi7%<6v1nM^ym6e8oWgv`{48p-+QrN}Fp&@v9 z1+uc3#q=1_DiZQAyl|B)kO9Yhc#ay!e0UxZ$7=+BnS^*Akc4<1kc3uB^nr9)2ww-W zvxpAPrZCk6(m_O%J9n}06#_d{kuJsvfg~ivlZ1qLl8_L#RM&iIP?f2u2-4D^_h7%EBE^2~|ky5G1g| z$`w!yP1+l0VO_VkbP@eCUg6*?l=GsH72D8!&YimpKhs>oQPAJnnH zbyUREnHV)PC?vo$j9XrlTiz0vSM5}ObWnJRXay~91#4VEy;Fq%-@tGXON56uw~7_6 zqSm=eP+-_-(Ha`u8b!EE|-kn)J44NxrBD?Ju$92rPp z1f7e)eZ<9RLp}^W7RNhzMX>JavA8QlG2q&Gn7(kQAhyY&BfNtGeMB43m)n3Yx-QH& zpmW!$aqD!^6%$8zQo2H&sBoG_N2j6Dj{iuY@5oas07S;&OlZ`jgT^)+DSQ%;2(WydMO(+?gn8l>xVZ}a%8JCeX zEk2V{1JlML6GWmi;TjX2g{cT|iR`3IQVvEJ_^2!vb2^Ke0Ah(&72rYKbXI0oEGv#F zDsDE5l?Hc)(OIMfph2JlngPYc36&J6ARa3=18YlI1p=(73Iuqn3Iu2PD!?eJ3J9DS z6;SZvR6rCFuL69EYy^laqyhn+rvd>6M$-t-K(M6@W;`mFfqGR}F8GZ>cer-W5 zwnHrJ9HGf}HkLljSW7z_J6nd0^H3XmP?eo69|t7^lbGym(0L$}2~v8dg4RG`so=q~ zU@U{G(?OH0G&q1k!(?VbyKL?39T=WofC?p0*c8)PX&#`pWL7#e&5C=~;=sfiRP2cG zWf&#FFB^U>U`p-+V%~$_=kQwq>$FS3r+$TB84x527Uq)S_apq$K#W+r7VJ=wyJ>NM zCD0%A@d|$kol#sYfr9-cAyZxk^F>DJ#RKJ&aOFn&Kp)HkO~x(>Oe!jDMmjSy(kdr4 zW%r7Ufps=2BicuQpZnBuOi7goz5k1X^GnZfoptKZwWeAPe^-@-e{1)@9_Cff&`Pnm zW8c2f^>M~=L)k-hYf8$-RKE8bY}%$bDzfyUbI_eV;}*@)?K>>GRC&#ZniI8V&I|H= z7p)5^o!Oe6;9upoba{s1^6l5Zx=37foIW7GBVXw^)4Z}3zeL?OT(eQ9*~$OLN3D?C&Qtd;D{tT&sI$4WG3az&rNz?`Qfbb=`zJk# z*-~!(IQ01Pa^|j^23HRq`EsiRn$o$U$us`YnhOmqf*ofgWhF9Gnbtzz0WgVAU}j(o zQMeQ!U&m1Kc$B*(d-)yb*kfiRVyZ6gJ@yHCm*{$)-+X;j)9t5^=Q{uOP@{3ZpW;M| z5?RF}=4Gpehu_Y!DAOyyJ6ivoMarY|nyoK#`ZgR~qW;kL&&;v8CXLJI?KyOxaqH0F zMx!?t_oo~+o#yu2sPWHlw41k#Xd660UcyDZ@PXG;uU&!Bx6cqEJQ{?=CYxZ3#eO-_ zkEQ3Vazgug-h`LO_s6xV>a37#(;T=z#Uv!;$!Oo3R+g_bJVT~u4K5C~mX_Z>!dm** zwk>A5n`ycqt{cWOJlFqNsC4wYmHF6rk|S4WRU>b|T>I}X_OAA>GoQUau<+M`YxK82opajt zZOiWspX%rLJ!7YKctSz!=hRC%g{Bejr^cSWX8wH1^ZNKL!FLv_EXuVWsao!)zpO!J zW^U>AhZD_Mp+^>%2KVv4FmsG!wW-5&2lGLNYZeW7`ao_g+whal{u{$*56E3+Z1iYB zP1M!AAN7B2P(0|Sy)|RWZll}R@-mMeJ(XCsv;E0wM$^HtL8}KHTRU5EbB5;az14$X zjoA?-c{QCrFyQFlLo3!_zOJ8~f4x%a{+?;c6^V}&J0=e<$-ekc>?23B#;8fBvxf%k z+dA*|W{s#Rr&sG88hP61%$l}63=8q?AsUlY7H#ZkNLG9z|md&%2L zM{n*-`)k!RvxW05YHn)9YF%XS*V+bXvD^VxDbu3ff zxj_Bdj+}3=DzYo1j(5DSaL@bo#nlrRubnDv_br^4ogZ|3ltqE$(9e%)CrfmQ7ikaui2KmZd#X*ONOey;bRb zuD_-I1Mkp9#;Y$3FDg%Zn``Q=-SA+sazMo7(QmWz&Hue?Vo~VVy1Z_NVwroP!sF>P zSN~ZY_|>DvO~3#2tWLirNmJ*28eXrl zVXJEWgU8>LWEB6H;B>{;oo-a|GJ5<}H;?JNceVBHlejW0>cBeV_C@==suxIB&kxG3 z{yit&Y^h3A*%wrscDGhB{I9iRlwYLBNGQ_}=BZc*Zqt{)8ZFg6Y0oI5s%fihv|i_I z_~l}r_R;grCx%rgMl_$0(wUW{Gy3I@OR}jqM%}#2P+l{&3;qjt3MO`&0aO=ocrb#lq)st+Tx-6%Ab5VqMl%K%CxX@*QL`kT2{@YFXogq zTv?j`<&t*L!Z>R*+wOTtP0@e*M`$=K8SrmoMI)P&3s*RxY$rGG|npvcb)^*+->}8B%pFiC0El2-;bp{h;x$+Q6Vn`yHCJt1;HbjP|U6 zUm|A?W7jy`v}#WJtxz@1NiJ3Ae)A#~gTiOmc8;_5dR%p4?^CNo&&@-hcQ6iS=r%SP z#{3ceC7R3^AJpt-ts7i&a@xC!xvNaq7aW`U==n{(tLAxyjI$RSx7sx?r04t+?7wG- z@!J6wesMFtTWao@an~_w#EZUTZmR}(IaHd(+XX!ux+)>-LwLO8<7uA z?K-t?Wlj7$E zg|=s0*khS-KV;MLa5iuPqP~L_WMn8qxUQ05oiAV zx@z9t{>PY(XO8x>n6mRdDD38$>p9oPPxEUV-`YAk)yZZ4lWPT5*<(tt?k&7yHR`I$ z$E={@Qbo&}e_?_k=K8I8ZTY5ZIHLzw_kom4AbHb5Toi?_;@q2<0QoaE8inlz*>o1` zMvcmf0rwYP-E&j2@QI_Mle_8Im#-A}TF|W)M4wojbZqs82K89G2eyg3bm>E1tomi$ z>C_`HmwJR~1unYd8n9WJ_y608liB7cna%)B#C+H7n6 zrDl`$yZogtOs=Up`;gysnuH|;gSxt_g)TdJiL@bW0p1;*N$&gK7i<8h2nSBP>lfCK2o>4YyJ_qAQIeq4hUm z7KhM!h@-6+np(gKv>0%Ug>bkWE=;~3Mn&ZPFnuI6@M&Vh!JyAE2o+94u#^q2j)3Wq z1jGfEiDOmxh5#E(SibLkcRe5`*gcBC436)^SD<8ev z|Bo7=+V-EIgwTMnF<2KW@SMKzC>;eOm<6L5FP{jHSqAbU#_x1u^x`w2P}`qe2p$oa zz=S6cVeT86^eYp2IuOSp5cFh0f`Sh_J%yPAD`aU*6vE78rLb|110-nK7?T_=g2(A@ZT~= z8L!`wBmdaz+_CeF!66Y>o_e11>$`gJ4~P5|xpaBUs?o#c;@H!k793d4zBsF7w_aq< z%09OfA2%I&XK662LiSFi^Xw~xIw(0&PsJs`DDM zN50GH>{#Kq@n%cIy(g&8%{2~H(qGrz+HfVbmR(dccPrh#Y3DJIw(5OS$~%h(G_ifR zr`m6*PPWjDQK~w0YHk*L!J&ycHA{v*`L=C&ziTxXWv>AcCe;ET`R z7A=!d_V}^lk5`YL&VG4%li7*lrrBjVhL6>accxek*?Dg5ydzqnndp^4~{h9N4 z5Ob^S>Om(KrtZ1)cDYG?)r__KhE^=G_^13p`J`9-H;jth{dvUe-2E*HN4~3_+olt> z<@3a}8@prou5j(SGSMRpWGTFC8}|_1NNMmpy^e3ncg6zWYmp zNphwuB#sj4ek zFLy26?^n{k=j+BtwF{6;NUDn7*BNtWw5c`xI{zLs_rWuh_{kOvvnKfj-1JPn89>`r z+EzYiXsM|OGiS`^`MSHjmNZ*Vh8(IV||6 zp=QiemtyBh>s$164*S);2=l*j^&qMXs>>d7;@_m}*_K%YE~5jP zbrH#CLG@;**0-K}zQVd=zzX(({<9e>k7Up2ea|dCxVmvxSUND|M0W7I$i>R$Cl_tLDz z$35N_9Qf|A!R*j|T*BsmSv6;MU8T$GjEh?WK1e%V{GqWmMA>?Ekol*L7tdSI2)`zCAwROn zYUcC(XIocUE393;Ez~_n=j(>MQzt+4URL`s{%-BAN8`so9{XmU?C{WG-{s#PFPZd0 z_jB`S8-0&FdS$G4v!qE*WS^4{)#irVyxzUA_<7Jj1xjn1CMZ`9{d1S+lS68o#%<33 zoV|Keo#SwYl`o_;W89s*mklwPa=<2Ay|qnZ+tVyJn|}vMul8E@A~7x*#r>Ur&gH_V zL7Eq1`c*SzrXB8>-ySh&@p|`*TjN5NPkyz}3HbDO9nJS#Yk14MZ?j_R7mOdO=&+4Z zx$15E$`m)d$}evx-$-dvI@_#W*rECN_Y04wcF^;ln|Un{|9j;Px7ul^HfwI&>K$Kn zZZ|#ULTY?z?q4YqrE4xXH_Ami&CI!6)O>B)#brTd#y-bR+c-b_V4<2eBzOBY&-mr$ zbE24r~_W*y-Xf>WY6amLt{>2$JF0BtxobwQOLxp(vTcD6 z90t|ydgpN9t@F~q&Z^H)nz!|3h41S_jfrm_4*7k=if6$oQ|x^X%--NVB**wozx^}9 z<*hld`-P8fU%EW^&F0z1v)7c*9A(z>z_TOcO{`dn@H@+<92w~TF9Y7L*4`**>YyJww0=e-$yUR|fM{*(GqW5f5BQ~DWdR@S#R z+82}_IbWe}W;ca7<-rk$Vv{c_l~t0zEzYc76qSnBC!gLLIeSCvL)ss6#>;+6nEUeP z=K+I#XSd#)^XAPzEX(zi4`sP=RE8=T{+JmwFXc}sqdL602GjKGnEp zzv>L_?P_o6r`AuYVqdcwe9L9KZ~8Wt{`5I@PnUlwx*^Z_>Xa(A;Md)E-JCVQ9UZkN zztHLB;($q$Cbi6GA9dF)&hu@)vTxD4%nQ}-FYe5GNDE@FHg%{`P91R|CBo=+!{426{EntASn(^lG42 z1HBsP)j+QXgfy@Po?(@P6+0Z!rlA5@YnvcpPi!~bdB5=g5b!iy31t;ihzN49=Rx7H znnp*tMDiv)f~4e*pHv}WOy5^c088L?H%$R73F}kUS^`)KPnP=%V7%5^ts#JAfU>W) z0G5R(fvSxKFdgI&E-we|^cAWv56OzfLi`j!<|Y+EeMMMztyUMnO0bHSDkQHmtWOHd zs{(5&!u;^_9Zf>?)gVORD#WxkwXI}^g_$mwJ z(}6dAqy7R|7hV>cDkFgPkREE162STpY-m#P;P+2I{1*c10@wgv|BclB`R5JcWvISN zo_v@A>qFHl0@w&rXHE44urXK`64Ez*iByxmFHs-C^LTh8!y%?{M3=y8F$mr*ZGj^p zu*9NF;4nbN;q_W74zFzr<2r~{c6hb`@CcC*4F!M=B6I@3Mis0tu+t|9Y=SJS04rRW z4_Q_bjqUUaf&L-OYQw`onEwgr5inU;PZRx21Wl18jesg{Gfe`I3S(GHBJn0D9ITs^ z6HDktXz2tz8iz+sKqol^;Q_DUP7;j;dXwN;R?$xctki{}aiD$73%AJ|KQqULXt1t_ z2R3<50wBnO;6joB;ammsoD@JfUPVIE0O15}5|RN3KUqUUvH;=!B_TRMI3I_EH`oY%yS_Hc;FSMUy~&j0m2yzB%}lo&RrlOWq@!>D+%ETW$|Jl38?~v zdxeD50D@7%h13DUmO!4<00_URkc2b=!a2Sqqy-R+4lbmPM&hx-h5CZjhI~i|AO;`O z1;~gG=>cTShxFmWTN6Ii4qo4BMTScN-0Ny&pG0UE-GqyVzyL(%}@moCkQ z2k|7qO5Nf3tvg9YR-`0d1d;>Dl}|+;AjsV3a_<9>6(3RnNFbRaKmy5>L?C5=1d^!$ zgkMZWN~Q{sKr%IvlIkLm20#MIGyxJwrUj5dGHrmY`EvFZfph?Z#bIuXbOEyELwW$& z@gaTW0ij%8$$kJi@F4>j@q!i^!rLR@`3Ejd{N5!eK4b*XtGn?bW8fgDX9CanV(2!E z&@gZ-!{AQ4<7e9O+YCJ5VMm-ElnfAl%sCCzPo@@GL2MmA+>cN*g$`bj$B+Cc zLF7FP$_)LFsLhx#=Ywm%ywQ~w1(9dx4U7e1sI&q}*3gJQX$wt+$5(6<=-MbjNJo&B zgronGK4dZ%u0z>=z|sKeZADLD@7_Fb)B7($i7FK<=xFf319!09Y=#|Q6YzO#@AxX= z0Xt?I0Xz1!`LHX(z8H4w8P~v$mG}e-V}FGG;}}+A8iV&QVqWZwge>wL_GRN)YnbT$9S^L2^F%Z(*gdMYbd!~Eak%U*~gAZZE?2LfsV zkLUk5CNLUy94rZj9fw^ez^(%ORM>GWAQ5&PNWqhN93#kq9mfpT!p@5kkaKwzqCTLz z{51f=m?w^~ihGw7Qh)-OC=NPcVaBsEk~49jgp4TRx>$Bz?0^Bs7>DB;xS9v-7{G(jribqfQ7spI+^c6>E|LZ{@k_MKkck9(a zuLgQG(5r!74fJZDR|CBo=+!{426{EntASn({3jaV&2RBs6{fR9$^@RP;>;^Nr^i`V zIJXK#|s+#av%^Rc}=eO9vj#&=kYi{2stsUqTtt%Goa=8oj3Te8vc__3rQ0xCRk56PQsw$Z-h<}-;jVNv~529yg1<7Z5q}q z4?P~Z<1`waJi{XXC4hIPXTNGlg3lkz(6d_b2QFd#FflxMV8i)|EJzu`GLZjN_n*n*@?U8GaLky?|9=6Xvxss4 literal 0 HcmV?d00001