Mercurial > vim
changeset 35927:dba5dc4559b3 v9.1.0665
patch 9.1.0665: Locked variable can be changed in a :for loop
Commit: https://github.com/vim/vim/commit/6b97d7ad197de0fb38648c91552c4374e39fdf98
Author: zeertzjq <zeertzjq@outlook.com>
Date: Thu Aug 8 21:05:57 2024 +0200
patch 9.1.0665: Locked variable can be changed in a :for loop
Problem: Locked variable can be changed in a :for loop.
Solution: Always do a full permission check on the first loop iteration
where ASSIGN_DECL is not set (zeertzjq).
related: #12470
fixes: #15450
closes: #15454
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 08 Aug 2024 21:15:04 +0200 |
parents | 7f18f3143b0b |
children | 07f5ccc60297 |
files | src/evalvars.c src/testdir/test_eval_stuff.vim src/version.c |
diffstat | 3 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/evalvars.c +++ b/src/evalvars.c @@ -4100,7 +4100,7 @@ set_var_const( // Modifying a final variable with a List value using the "+=" // operator is allowed. For other types, it is not allowed. - if (((flags & ASSIGN_FOR_LOOP) == 0 + if ((((flags & ASSIGN_FOR_LOOP) == 0 || (flags & ASSIGN_DECL) == 0) && ((flags & ASSIGN_COMPOUND_OP) == 0 || !type_inplace_modifiable)) ? var_check_permission(di, name) == FAIL
index a346399eb513bbf2c45a4c98f5d823d206e7edbc..1b17108c4f3ff5daa3d940114576827aac225153 GIT binary patch literal 26577 zc%02${c__rlD~h~50Lv8;q49OJzEwj`Lit7`9n^oE}Lx4q^727>{3w_BymR~wIt<_ zouulX<{sf*;NIk(<hlV61W16QXC{|*GL{H*H-6n{G#VfYJLG4Y<r$eJDR~IeDA{C$ zJ_JjWFQRy!b$52MWRr%JJVf+yyvd_w_aRyph1nuV>6Dd3t96p*#O)ry)hQOaB*@6a z>CVn<6Nh<}#3VbLB}r$O1QQ_LAtX<q;Wr^E%{OUGKHQVxko2G^4DxWHR(Wti<0&%0 zM<I}lW*Uqc%b1goAESIRrfHg_on0nwxdbp7P4hAR+a_3cyuAX<ZXr+=7AJ+cEKgE8 z&Y~rafp?Y7nLvL1tyCaiq{$-#Ss)i+;Y+wk010s)(<GjgU>-!VYs92c?2)%&N@@H< z6w}VDCH&6JP*)$PQ953ida{C!`<{Is0AEh0AkJOCajUk-(+%xJ8PL%X^n9*z?d~d_ z<dC1!XYdJ<Cu9|Tq=Y_2S&jt-e?&7fO=uRoIbp_Ue05L^4Fj_cvOo+bB?qJ9{^{94 z$s}}0Df(T<<ubb6?jCX0&Muh+&_`3|*Fjvz`piVjUUIN82|nAb*U<GDcpr=erb<?r z?lFyWIs@6A5BC6(W5#O)d{Z+q!pJ(VqNY=_I2<c-GVOrd=o!5|!J9MZ+$@*lEKfll zaNq3>ez-4M=$*B}7feC`hT2Ka!69<$-glGy8R>86vJ(d@TJgW&3=6Rj>o%#m9Vf2& zciF<_bb5;>|7s1@JJZeSQ|^M&oQ8C}#64jBYKQfPhRu*#47shkLnE!!e@R<kqP`M! zrgTQ}_mV{)hrG{|HICqXwI)$UAb<rhk|8?6qykhFF7`;A<OLy#@{BHL)yTyw(eo6Y z6nAr#cG|==A<r;WmYJEBOJ<|dAvcH|r!O{E$b^Q$CZogw8i#~QoI||Mh?8w5&K9r- zK=UPlt)vBBLC$Th*Mc?Enfo%8Sd6OcRJh~U>W8*!spJR^+-n+4DnNwOwztI>I;|cJ zelOR2Owx~-xX~DZC!6`ArF&K}f2oIlecTowRHEYlpUn+{5HqteqK)EBfGV+22-=Y# zO@n7LBp(j<cK+bpk!T)6Dv5b@w)2NOa>PqltSk|=WfA^Titorhs|(^O$&wYXH|7e^ z967=`j?Eh(k4}&JB4Gc#pfK#iWVHgp8G#ruMKC-XK-v_=IZfjt2O?`&AEZbC**!Vw zdfndPQD3P0Fs7jF!<o#Mcwxc{ljRiqF{@b|lMjbc3dW)9I+$_*#(J{CHH4P-B)vJG z5h9CbTM13}6b_@|AeS6RF)WUvX>C~{+QoG93Cu=LPg#pz@ASl$bd|)#dIpvNQ5=J7 zzJT|W8@OlW^jD2Vn4c{h$ng9el6dH`(T_JQeP(ODvsLgECQB5N2JxJB4tYY3db7+O zsfC;@c%b8lvEUd=<^tNoY4>_T!;e4Ec@REd#?yDO1iS^Ho0N7K2n07cvKe2KzbD1F z(PMrFgD=Zr>AF=DMyN6jiPw9X3daM_rh^AbdMO)eHZfu^%L;Ak2$o6s5iffx^^1Uc zp6`DdvS`Lu-h>=@2Zsm#L3VH#^A%Era~&-6)8NrIDv}4t1GROD>NylhhvXG};L;gN z;oC6El9Q9eQ$ZKTIpIrx?9>qZvcA?~@CxdG8y1@aypxTqCLokf^oqkM5ZP2=TL-HI zw2o*h!X(CQ5@Ii8WD#WJWs<DN;R>RFn81*U1f*aSEy5CVvqZf<+(QX&ivSN(Fe;t3 zudIV11qW0e&Iik{=zh0Z#SfsPw?}-4_nc{4+$!d)O`OX<vWzZ5Jj)ML0l83%4{j1u z_g=7QW3IN!DBShEKy#a<<*L~sNxXb!-3|s1a&GlvNgk#_wkRaN*~BmkI(&%=0`@oL z$De*2k$p<`GqV4dC=HPPko+w$uVOHPL}24d6bCThBaE0n7R`XGB4XSu;#xve`D4O9 z7AXa-cez8u_=P!gHXBZpOzsYGy~+DGN+Y_(!4PVtyMIvtvg}$}Q0#GmmHs4BSfv?Y zgnxdECO$)QJ$n>#9gusM;*JMM7GDrP|LS~JQ+6$?t(D?|e)1Tt>9@57f+oL>zl`Z> zoj;d-Roxn5)%*J15awKwl4&KYbpYw!CXV7LkHBaD4izg3>D@DqE^u>lK7?G$?+$uL zhn6mL+4z@+(%YR_GS^a>WM$OBx!cU>Y<Bz8PiRN@;MZ4|ZycuH8%2Pv*Ii&k5byzf z6`Z<&`iia6K$8xTFqm}UAr{8(U{^y7<mT<V0=9?Mz74NnXZ~lC&_{~Fb_x5wWnn>c z+`%q(oDF++GHnJLHp%F_e3fdqy6OD6QVdx61dYp}5Z2CdxehXHatAnUA!qGcLxm(E zEoi#-kfX@qL|Y`aLevIQJ4_`gwpv8v2Clf8;MK&Hb=@JEG{_4qVuJ4Qv)BOK=QjAF z7B5wOy{_LMn0YT*9rB~uCdznmm;;ho^u+V3EZb1>FN4G0vFe^5qxCqL!BTe2Zq#(t z+Zz1Vjf;zFcFW6^S>_Xfg7p|IL?F-m<rnfQ=j&H?H$u`M>{Rbe?d)V>8m)84i8I{e z@NFYytkL<k5ySQ_Am8k`kUMhPeV+$PyUUnIIo^dr>k;ODBk$09C!lmVMtOSDOp4%n z=XF`c8x2m>73d7=y5?!C*FD@Lvt66jymnUeT3O9&VYSjk)nQlF)9j?4j|M=xTBK3z z#SNl#f<^tlqW%Lc(R8i*t+ei&_P9!S5VANH->|Ud8)EF%8Ojyp(vk(#p}6sBxW_6; ztXlewT3SYg5s<1;v$qP!Zu6GJ!<nE}l-NpGd|l#w+yhwK!;et~o$`X5^gQp-KQtx+ z(<scxK^W33Gnt1a%V!v?KDo0banFeNYu*2_BYWi4D<tg#nGuzz5m>rx(AZ^zR*pHS zJEm}%<2};zjxCiCFM3I1?N8R)6BK-6t~~TSlze<_VLlo_^~7^~J^sIKn`Llvczgt; zPhKNo-#<P&VXADA$9`ae4<txtp>rVc3?M_NPc+;>-t4fU;JH}3yMKXe`i{liu15%; zSgXv<++q*1pmjL_+=XfiX<nn})C0NFufMBHm=azUIWvcG1?B1nICa^&NnG-}#-|3v zQ#N&u(dp@F{f<0?CVCRLr}$nLZlT$h5Q13QYg<BW?QDNupw5V4N-`QJ6AR;HnM?%Z z>9L5%bt+{Ku$5F;RpWBHK;)mcL$rxM#>rz`;OU7C_-IC02>WX?QJ-7c2I8-!W`(4d zoZ%vfW4f$z^W9j}152CL1kzhrR*qLuJkFxOQ+bOg!u?5T6B{G=6xMT=(-q&eOg1?= z8jwkp6E1>1`+^U0K{oxkpfTS0WO5++nnm+XN~iEO#XDrn=dLweKAdrJ2&6V~iYbs& z09<lT_D}hbWwsQg!4u4tl2SLrW$`%Byu+V}$e-7EpD0*viVyH1jC5=98!pX*KRDyO zbDD!V{9b!<qCziP;S8;a85ZHx8XJTi2>JErdJ1lizrx}*k~g&FiMA{o5I_p?K<tBK zrt$9%OP?p9+)YsI?mFnL5AaJoL*#s5r1ws}L=%XWcd=s?`A&!gnwn6(tS<KadVh7% zLUgJKx=Ty(wQ||S5KY1KG8$uOH-_M1Wp}I<hY7ZM^m>yEr!IE+i+$=MayVkoIZj}d zEWahmaCjHPKYHglu%sy->LJcw9E+nAHy!3;)7$4erXBZ>E_X(;YigPenNN);K^BE& zgyyBN@MjwylkgHh!!io1whB~RT}oqJ%5Koh3^LF}Ow0#&$SglZ+97VyR{>oXfWihu zml`5QT|(f@5}T#AHA=?N40VZLmJLwfX;2x9;<!p_1$HxK8x<-{sMHp-`|jQg%q|de zP9x4zu2Hv^oG<IH3cpd~iKxHgN*NWNs0v?6kXKR_z03x3QUQ6@42XMv&;}ACFEMa# z3C>d68YW|C#>&1-8n8MT<KJBzYM2;j1sIoh-<s}aS}?9HW@nz?q{>4b9CP3+#er3j zrC@_vtvNqK(UN~l@1e?*!(NO2>)AEnlA84ptu@%;MN&S)CZxp=<0E=ob@PP+&~-!D z57n@Lt%UGvX@hF1O{Y)~=hyZieqE3>O-R=jWQ<;eB84bO8>wD`T*BL;Leunrt;WC- z9Ah&flp^a2wc%-_-q6f#)Nv}RZ+K4_Rh+85bfXylMk-M)wZWX~y>MeU{!Kx`qq-eg zC8*ypJKjtbI8xAkE1EXg(Zo095JkSa3RFlPHE2Lf4F&?;NWvOP#Cn+xA*~=B87(_1 zU^Q8GRJZJiS#2~?ph!XYt!P@~E-gDUT2@MJ3NB2AcNJj#LyaD~Ik?cOI&HbyC}?4} z4uqMYxh;C+;lk7oC#<;At;BmPb<)dhh-Z~9xiw<DEwD93$XhjCxn-uj4HXbl#C<E8 z)`%sO5&B$If5!%a*E3_Emp1i^tm8Y0>pKZqFS9|MS0H{@%=89)3xV(ZvfBZH5#+)E z@_PyBdkIo6vw>VxKz`o<^0ff@+HAeoYR|uxt-qFt^fDWw*A+ys3oH(~T(5DbGoF(l zf8ftn3TXDt1;65|wM5i+^+i}M)$%Jrr#6@RmC3X=A^4TZTN~@XX|UH^*RT0*&3k;a z`_wwncg^c?2V!1}y#!y~7*JN%wQ^e@U+NK(_mVjvUI|$Ch;yapWLGK%-nnJ!Z>+On zys9Sj9HcFEw3<%OdI5r(%jy7awKj;?l`NOjHzrxal$J^KM$7$lG&ed{TdfW2O(hrH zf_2nn(vb>tqyri0Fm1Iqn4`+vy#?lNX;MpSB`5NC7e%zbRsHZ*$7`;$p}nonf<8~B zWW;<+bM|^O-oDGWhfF?l`|N&Xt1a1nIo|ta9H^AG-a+eI_YC-u<-jbyJ5inDs;>_9 z5?Z~y&3c~GTAd&)0A6!|7EcK4N%nPVsp}GCwY2pr&}_eH0q>^IpG@Df<Wo&_Q=+Pu zw_Wx%n2x2&_@)9Ug{!_9B9#!myVz$b<6SHfiN|uK5Ldu%P1`1wH!wD)@j@?)LbHlO z27H<lmijjNvC5$$Ruifg0phX@5Mfh<(D&;5e51V|sxd)K`+enR$yT~Hxx}!-wk@74 zc|d8}@Kz%V=g}ib5gwLWjM+x{qNpRdtj=~_#-9mS$P$6B%LsHNV-4Sl>QB^|Bl3y< zM2Sh;=-MPHJW7@8ea2}{R79BZEg?(KR5&=G)<aYge|#;7ZKG_P!Khr;zEK8^O%*-2 zmg7KtYB{w!B8qRmVGO;5w{4DY=5Nf~h37X$3q5;Rh7M;n51`^(XdHBHIa_D`MgiM~ z;<71O(H8}BY>7{8yIUP)#kZwlT)u?2?SjJ0-?+dKBWlu=3EkA=kUB8A0Q2xHzD<ln zx-Dm$A<i~^l~^TYkU~h)6uNDDf{iV)ZeRmx={I=`TbjRX80Gk%kh6Wr!?(NGRa^cI zC4XsjsTip_+?2#HKK*S`r@X0JiycyLl(Q|6s9N)Oe>1sX7O^yQqC|TLE9qe9`%Pn+ z<rLo>H-sahG78!jnN*c|!@rr_7o;nCz9PS(Sch;!5h>Ub6-$Fc@Hp&&Me*);LwNi~ z-uJEtIH^06wJqGK%8SN-L&+})tuOhpg<-u51PJ@)$B#d>-US)#_vC<ac!3CkJR%PE z`(@3bC<7wLoaO~u5C`dHaAlIqi@p@5NL8aRho;0@R?mxsh_Xf%Qil59t^Kx-j(xuQ zt#d@V@Ee2`=~$wQ$LqdQH;|>QgY6TG{<IFZQ^tJWhH}*}rE2o!#2|1g^8lA2P0gez zb()-VBKqBNw0>&l%X(($G;YrgmKEVxq6)|BzEU@krA4<lJai)mH*2SypLiR}Rlk&~ z%2yM2fmE5bxD;t{CP%5$B$d<VKLC=pkLY}1=U7L5x&1kqR9e6iwFSKHD|G`|T6BNY zlPTYLrwVUrcF~G*)i330Ey(FsAXR2pE<+lfNm1%FIpzHRyW?p6bPcvtneN5J?hw7F zh~8Di+*g*ZX2dxfOuSyj6L^{G3%sPS)en>!=@GVv2`Kl8o+hE}4cVf0-B(+vv{v*= ziNEX@DNXi_kf+sGB$hYH{voloetw9zS#=q$OG&j)iM>;0_86q$f}N~~FU!!3y=qtW zs)NF-4lKKSNFevO4y2(Dr1AAKo6-jrr4Nj;j!`k8pmrNPN~DMHC8k<=3tY~SQyVAY zA*18^S}ZkevQ)vkC*O@Z5HH6VTXF<ReCJr~Fx+YfMTFXFT(%2N!rqx9;WAoJk|3S# zl<x$}GVy+2OdrWF>@2HqcjWti+EG%HgB^28<2*x*@<a(jmzg+QiZvZPQ0ATDFmmz! zUWuhE2w%@gj3)}kG3Cdt=Lvbg|CXi?6i>z=>jYeTvcy;8@XU;Ck!+Szl5N6}QXvH2 zYZ{|qFdZHS<NnE&@0!8)UG1GXEV$R%k~JQ8_9~pnV)#CEH!;3`H04KYc+aI-)Q-ZY z_*QA%K1H_~EXTU=g&f?pc`%tK<m@qu@q@k0>?|UO)%jaN>fKc|SM5ZnJ>{-uv%;Ju z4E)t`x%UHrqMJAy1+PPQ<1dIZmmRSqJHsHe9J}eNqlv#~>Us9pWL0YKh2;GHD4xP3 z_^jtzYJ7N#mf!O1a;>S>C!Px~2cysj$HSh%iGeYnoEQ!ZH8BsrfEnWf3p)-!%Fc0g z=!UoL!cDq-9)rke9<Qi!j$d|`@iQe|{47p5nV-!?>0BvYviAWig>zHkCpSBDyNv!< zcF4pWE*a&o74^iK0*o2|yuw_ZHp#ISD5P9c3MNc4DMgd7A)9nbRXP-XP5Gt<Ue>}+ zaTq7>Jmqq(Uh+;fo(@9k8bT8|MOGZTCC;mS3^I~J<i!w!uX!gklI218(dd*8eWJvL zDUE56(lrfW((eFLuh;X%d9>cq=@}Wx90}%^govge=o#sBT<v70{}{jh%jo*`<qzyM z&jl@x$AnP42+|<TVOnD6;7ur@Ss1MGpzX&+1j!gXfH(sg(_{lP);_C7McAI+4Cbqk z^f~M7;#=yVCJGmSD1^OSjk*RgImdkNf~<ly^6r5+oJNZiC0Fbqr$;<#5+*f-1oF6) zY)?JvUZBQz^3!pgj5*eEwx%IFVE_yo<0;M14mtnx{{Q~xe_fFC>(%r^^jrcm#&ikc zI)iS(b4$;!-&_>kAeC|M1Tz{tw;W5O5=qp%<xtn#D*l*?wV5YdJKkPR8WJ+A+`=z$ z7^^UPDU(k@%mctG%p$xK&TsvTlCuU0Y8&zRW;|26l#sB&4Q~>psY6F&Q^+`G;~^U0 zM#ZU9c$@<7>M@|Lj<8L}{v--Gp!>-MN6(@uCFd7~SHg%(bK#EcFzt1+WXH>M;XCD@ zl41Er?~}LxM=;0R{ryiD{~Z4k|IdH_>p!Vu>LFU4LFN|C^2cbJFNQt{%HTH`8GIWu Hnw|dxWu3+F