From 8b99d5786097c4b78dd13eb60011b93c4ad6d608 Mon Sep 17 00:00:00 2001 From: Simone Date: Mon, 20 Jan 2025 11:36:32 +0100 Subject: [PATCH] Fix assertion error --- .../detectors/statements/pyth_unchecked.py | 6 +++--- ..._8_20_pyth_unchecked_confidence_sol__0.txt | 7 +++++-- ...8_20_pyth_unchecked_publishtime_sol__0.txt | 7 +++++-- .../0.8.20/pyth_unchecked_confidence.sol | 11 +++++++++++ .../pyth_unchecked_confidence.sol-0.8.20.zip | Bin 10811 -> 11547 bytes .../0.8.20/pyth_unchecked_publishtime.sol | 10 ++++++++++ .../pyth_unchecked_publishtime.sol-0.8.20.zip | Bin 10531 -> 11214 bytes 7 files changed, 34 insertions(+), 7 deletions(-) diff --git a/slither/detectors/statements/pyth_unchecked.py b/slither/detectors/statements/pyth_unchecked.py index 959aee6a5..fa3f91b2f 100644 --- a/slither/detectors/statements/pyth_unchecked.py +++ b/slither/detectors/statements/pyth_unchecked.py @@ -24,13 +24,13 @@ def _detect(self) -> List[Output]: for contract in self.compilation_unit.contracts_derived: for target_contract, ir in contract.all_high_level_calls: if target_contract.name == "IPyth" and ir.function_name in self.PYTH_FUNCTIONS: - # We know for sure the second IR in the node is an Assignment operation of the TMP variable. Example: + # We know for sure the last IR in the node is an Assignment operation of the TMP variable. Example: # Expression: price = pyth.getEmaPriceNoOlderThan(id,age) # IRs: # TMP_0(PythStructs.Price) = HIGH_LEVEL_CALL, dest:pyth(IPyth), function:getEmaPriceNoOlderThan, arguments:['id', 'age'] # price(PythStructs.Price) := TMP_0(PythStructs.Price) - assert isinstance(ir.node.irs[1], Assignment) - return_variable = ir.node.irs[1].lvalue + assert isinstance(ir.node.irs[len(ir.node.irs) - 1], Assignment) + return_variable = ir.node.irs[len(ir.node.irs) - 1].lvalue checked = False possible_unchecked_variable_ir = None diff --git a/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedConfidence_0_8_20_pyth_unchecked_confidence_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedConfidence_0_8_20_pyth_unchecked_confidence_sol__0.txt index ae0dc2ae2..737b053fd 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedConfidence_0_8_20_pyth_unchecked_confidence_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedConfidence_0_8_20_pyth_unchecked_confidence_sol__0.txt @@ -1,3 +1,6 @@ -Pyth price conf field is not checked in C.bad(bytes32,uint256) (tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol#171-175) - - price = pyth.getEmaPriceNoOlderThan(id,age) (tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol#172) +Pyth price conf field is not checked in C.bad2(C.Data) (tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol#182-186) + - price = pyth.getEmaPriceNoOlderThan(data.id,data.age) (tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol#183) + +Pyth price conf field is not checked in C.bad(bytes32,uint256) (tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol#176-180) + - price = pyth.getEmaPriceNoOlderThan(id,age) (tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol#177) diff --git a/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedPublishTime_0_8_20_pyth_unchecked_publishtime_sol__0.txt b/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedPublishTime_0_8_20_pyth_unchecked_publishtime_sol__0.txt index cb331c8d5..fa2f9e686 100644 --- a/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedPublishTime_0_8_20_pyth_unchecked_publishtime_sol__0.txt +++ b/tests/e2e/detectors/snapshots/detectors__detector_PythUncheckedPublishTime_0_8_20_pyth_unchecked_publishtime_sol__0.txt @@ -1,3 +1,6 @@ -Pyth price publishTime field is not checked in C.bad(bytes32) (tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol#171-175) - - price = pyth.getEmaPriceUnsafe(id) (tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol#172) +Pyth price publishTime field is not checked in C.bad(bytes32) (tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol#175-179) + - price = pyth.getEmaPriceUnsafe(id) (tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol#176) + +Pyth price publishTime field is not checked in C.bad2(C.Data) (tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol#181-185) + - price = pyth.getEmaPriceUnsafe(data.id) (tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol#182) diff --git a/tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol b/tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol index 58880c382..9cdf648b2 100644 --- a/tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol +++ b/tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol @@ -164,6 +164,11 @@ interface IPyth { contract C { IPyth pyth; + struct Data { + bytes32 id; + uint256 age; + } + constructor(IPyth _pyth) { pyth = _pyth; } @@ -174,6 +179,12 @@ contract C { // Use price } + function bad2(Data calldata data) public { + PythStructs.Price memory price = pyth.getEmaPriceNoOlderThan(data.id, data.age); + require(price.publishTime > block.timestamp - 120); + // Use price + } + function good(bytes32 id, uint256 age) public { PythStructs.Price memory price = pyth.getEmaPriceNoOlderThan(id, age); require(price.conf < 10000); diff --git a/tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol-0.8.20.zip b/tests/e2e/detectors/test_data/pyth-unchecked-confidence/0.8.20/pyth_unchecked_confidence.sol-0.8.20.zip index 6e5fa1b9f1b470d9ad9ca7632115fd7f49e67ff9..744bc1df0d22dcbdd4283b0189da8ddbfc4bced5 100644 GIT binary patch delta 11294 zcmV+(EaB6;RGV5GP)h>@KL7#%4gk?xG+I`BWZG9O008^90RS`JUXs#ZMx%ego!4P6zQDcuZ>T+SDK^f8r!E4 zl}1&?=O9aRSd3;gvS4ojl*{-P%N+lShnKd_byT2VS{3)?)x*gU`!;`>M2h1In&~@v zqb#jOC9bewEMa2XU`>##;wDmjA-d&X8!4h8cU2958e;0 z@m|9{#*9w~A9`!ZZ?Ugs;>hY2)_%Pu(wD_}q}SXAaL_RqqV%C-5C&-A-B zP1w!?C-i;}X!5PByLf+qI`BT~^-Zbx-Ryn}q`?Pvxg*xizFXk7I`Fpz#8EUp;zrhz zYS#9`>7Mo4@3 zq0*je*WqT%`?XmtP%4oCb5~Ngyy{4xxWCjs1ijQ>c-YRmv44Nfa67QgI{DL_u21~z zpJeEbYt<2LJF3Kh{i;l)ttwg*jqcdd&SfyqWvo{eVA)>ELZPg;#8f6?7qfHAX=OG> zIZg_lhyBjLo^t&XRUv<{H;TW<;4$?Q7(>74D3QB1-!sRrN`t8h!5I0d^rP?rK@ON4X6&y1 zTRq{IX`PuC$FjL2RrLZr;v1ik4EFu~e`pkwIhkwtj5DNw6IdIcLW#cY-qT!XGAyjS zmg>qg0MiMDf%$H)746LHsjq1f%4?p~lx}JlX1f!*_M3m&-;)CMv7XP#rwDJFd(|tv zb-pIqzjOy1orB-fx;`5QP$5tuU?o&QcMpPU#mHENPypQRU@Nc>Dj7Ps#(MIE0?JlG zdnnmbs0l^cORa9|)KO!CqgP+Nt#OWcZ5s(&%|sECrXBdapTItlR_K-ZtCmNBY1rBY z)4qPwvJijY`+81mLLJg=o93#U%S54Ys&sLa!6AKDTprx}uN(y#0Lcqc!+MnO0+n|~ zqQ(!Z5b3QYKLsd#OZFGC#upe9xBoWOR{MmXLp=Y3T2d{Rz7y4jiGt^)77k0jK1v zpVf!eRR*&{w+iKMuF1mQ0f=Z;L1vhk5t4Djy}N;z*!b1P0DmIpJ9QJt-xAn%374t| zS-_-a!V?}&5f8vT-A+x!3V%gby*bOm6HV0i$S}8=)1`;XTd~5TdvXrHriwkt{W3%nx)2>G8i~4Te4SKbA)WB4g^8W&94-oq+1#9HaTQX6rw6mc z@T3Gq&{+EsgJ>#xwR$NYedM6!^4B({D(Qofb)8ZAxij31U6C@jD6w(f6ye(D3>rr0iLp z1E0iR`9PLa2ZtYZQIwz=%gaxPL92gGAx6<5RQ){Wn$QaSj_xR zJoh1G)92VRI+D@`L^6QVX5PrbF$?DiQs4rj)bxCCVR}D-_Qw7^FWGK4Bk&xBG(LKgHfik#M_G9+nx7fvoP3UfOD%(?u*zSo+*mg$A zB~wg)c1YK5rMdZI{GET*;Cu4p<`7WNK%pT@e{jlgGww{SOvypjC_5*f&;VM$@p&k^wNa$i zX?gm#n&wiDBD%3@tp1bOiAmZgO|gGlqT; zFcrOGx@(}Mbi!k6%Hm?5|JKx7s*j+-|MOQfQn)H6(w^9dY~ifI*xuJVt5L zTAG4Y3=oRp5GM}rA_52VV{lO&!&uZa=H-qnUo*!s0SgLIX*O75jtrVcV+7Q-VHymH zU31$#;OBxrZQG-xJ#Ltt5nmGhM_=h7K^GA0yH;_*NzLfApG6n#iA}&*93OSicc)(W zsaH!2V}e}QOTB-nq5XrURGf0U7WM_q+mzv~@XE&%!x@>j}Usdqx99W?iS4d?Gtzx5Bam9#d5Kd$HQx7!QZs{n&*j*meANs?T- zVkOJbyrerUX;`8)k*=szr;MX68DW;HA!7asp+hOnv7~?S=~dqc*^E%^KQ{TPQ`DAW zp$TCT4tXscBrm(~AZcoflz_d522>(Yj?4`wl`)q{2o&+i`9~=>GRNgL*wTEBJ`p9q z55LiPrNK7ArdS)Zcuq@u%aJ+)rm&-8v|_F^=8?ocX$C6fO(c?d^XDvBV-Mu7@aLpD-u}O>Z z7?yu7PuqfL56F1@Pj2QvbH?f>`_b?WQMH*Hg&kaBEM5{tlZb)W7Z3uwU{)@Clo5|& zfWPEK=%LXVOz=n(wP2Oses;3oUPPWVa(_3~d>E<;RUzw>BIurMew`nWnVYh~phdqD zlV>a=Vz6IZHFjkuADRSWY68~O{^8-1=e~ae5d*ig{P+<2U@9Q)1ndpTaBna(wS*T; z21-@LXWTOzH_>4U@D(danDmRA%pU@t>+f^}?m5_Bm@g2(Jqadgc%Ui#2QN&@cV*xy zKk4F>v23vvHq%)Co%{GdqBumivu~r&X{jY4&=+N$O+CNmEA}-t(p6&G2UPn4Q1O4o zS7-U3c}R{wQ;|G9oZgcbf5x{{MD;FCP+1sR`ZR*?)hSDJ;GF z2(mi*nY7pS0JGigU!Y)X(033X(ZR3lN8CC zZ9WGUF%{XlFld$*J1dO@OYYw&axAYPhQb5wWS{aOf$^orG->Z zG*yx=JU?@-mIN@yKKB?`V<(jM5JW_BpMrjp&@PnCXoSYm)+39hWvhQQ%B#FGWP8+u zDJTMlIL|^iMMR>#ligdb*ry~a6WI8u4EmAOVI?n7IuPbe_z~x8JkI%cN^r#ElGj?@ zWdzcQB=NAB9U62RzH|o&?XJf*B-$S}QUXYN*2*7X1>=lu-wwPW3-@BIfqgi>Nx`Nw!IEbO`oZ$e6mtkviFD z$~5F^ZiQ>Q0=GF`s9&SNb_W53?3>`u!%AokW$GtsH}HrKaxYTeiwt!wk_aWJ{@46&VBwS`zN4GGSPoCekX&RR3SH&DpPoz zgDUOc46^dnq-Ua_MP%g0O=jg-J5GWz{Q0+^5Jr`BSNObq-niUfLL7KcV7;Z7ykn?< z4v4NtYm8s9%_@Wg)!a*a67qwJVz9@JV9o6hTjIC5+w)FXCyE+V%?GUzk*Cxh$E4t zezaI@tD?zsXWZL&S3VC4_zko_9>?IeEbkR8$H!8n_3~Aa=5y{M4hp20#rp!~0J%R# z?L;Y|$$1k<X4LfieE&i*?!@4>nEZNCEhgbOlr9k&AiI~WRLA=2 zKSHNWAPY@Jr_<`eIOe6Xib)*y$GFu}_APdKXN#L zQb5bRcc6G=e#a14t2#Rz5Ho1>4k9w(jaGKtGv+O?ajQ1gHaC%5lIq{5H_+ zmTLRPL{_eV&LFb&)0f0lpP1hLqRd^$2O!YAMHPw`KJ~Hv3YP_C1&lFX_FOrr+hPdC zQ@MY|kHh9Ab}beZ@K@B+40;(j!$AqmOUX^NAeCK_$#t66U6Qf%*zA;My(+r_Ng==K zRwtWPn{9|}%l_q6te2)QeM|v-sMlaXV;KVd0L0la4j1m8>aPpAEyJ6fXNtizNL$VY zN_L7Nk#9g4&QZ*Opne+J^&YuUEf$-P$`^k?ZWyB1aUTA$zLN#-aS!C3 zqJM^ohy(dcqdZO+RHY#{OTq`KZZnxphwWzzpL3Fw0({Q^JhL}uDc^#j#32BfpP{}k=eNAI5EM7dCq0@HsT zRqhHs9vMo~aezk;S#zujQ^hmG=dx^yd4MZI_q-M1&kK9|hPeTuQ=q-)4mIY~6jgib zbpOy*+AfF#;aEIcrGK;058D4daq0JX@*H!}7&@a@u>KRBv2D#SoQ}lYZQL}&1~wb8 z+nB?}`!N5@Mb_+E3{aD~08TWPoXLM0hGu4YtZtf994ks`vJDbW{ljentPxpCliJZA z?_~xHuBbJLgSqe7(ovQxtz|#o>6CmMgc5qwrBl+H&2f|iM_66PX?<2+_B;8kR59W3w0!@EfL|28V z1}o?Ti$;+=w|70_#<|>}6=4LGlIY6972Fia3((-C+I>+lb)$;J^v6b?Q);SVwq2Ok zxKYRvt10~2JweBw`Ds0cyiIw@pyBRJwIk616k2w+-{2heO!{9+SLr>tcH*^82PrZMOM(d@iWf6@mjLW~=`K!4l@vw!%z!>xf)9LGuIs{E= z8)E?EyWim>tCWr%3g+*`vB!q&@t^t*DHmt@#Ciw=zv)uMuT156!sf7CXhc$){k`C* zU`|Z3-jMbXsu8riUJJh+bc+~mDpg(Z)z1xKYxrFU7eerAN0n@b+)01-gl@8oY2NT- zdl+P7bJHBWQfP9btVJeU1@o^g65I$6^r;adA_S;)P-?pF&!KnV=cxZ&-_&zGNLFdQ z!wv=M(A49)ice)Fh!C!_=MF@kH^|g7T3^4e6hV{$DnxREH!6KgjA-=gvsOM%X*@*w zV`HomPMR}6D4N&hlU9F`!d>G{eit2kak&iwu5ReT>D|4Z4my!`s<&t8iE3R?Hk!ks zUQ5&=M}?Pp_X=WQ`nwTaezm(Mnj|C-U#^j$sOx(R^hy5kkb7_Ed&1LXES0%DjMK3I zT?Zj|RXUXYf?MR9paJ_K9S1AuQj~mhn2QtK>tP?M#*t!m!O4H`sd!E1e;Rz|2lHa< zg1Q&OAizzU$D~e&vI>UYY)Pp>NW_WZeo0S>02dhurW#uS(S{ry&lb^nSbYJb$bd?# z7Dc((&l*^;| zWM*>-iO-n}uS9=Y#X~>xYT##j%tDFxbznOdyUXaBBsekTO3tdiRq?>L1nvxX*`(UN z=09JWJ%~x~yqhdE4#=34N z>)w|h=s0{C!i#=X6h(oy_d_fR=(I0;P>ot6zg>-iUDSUp^pXs;5!7Wvc6eYv_-r|Z zJBW{*5k0gREyTkC1&wq^38Vg_`iw+t7I0K8>@s)pTUCiw4NVLmgptD3K#kG4PouQyP+~vOn#XOq zXpvc|JhI51P(6CYAj$gTyeui0N^$zJCg=w~-G{DxIoTDhJ~;bui#dYFbAKCYs!uO{ zdx^5(ZJu_zSfa{8H12BQRtg~`0sxT$}BnGe~Ea7r2)Ty15@Z`by=>v ze5UhO!?Bk%;k`4DwG7cWI2iRo;``femw;I~Rb>;z=g1K%a>&RBW@$RE4iWoqf4u9V zffav6#I-Q5X^e}_282Hw3klNx4181z+U1rI)mG8#3}=Mw%HbX;H-fX=X`zH~&fje_ z_Mwtv9P81X)F*i|33i1JLddb@m%2(Wb=1~mJQdm2<{Q*hg&NNjcc}-t1#-Y~>OC{l z-iR~Z^BWY6WTD9QzWb&dwI}!WW-tOD{{?>@7;F$2-9z%la1tx>U(-Y(AJ59ST71M> zO}BihP1dx$Ow)89R>OB*7W7Kk*Ysy6oH=vv;}6*X1F1k30W;PRPK3&i6vEU5X&>MVSf|2a1TU6asQ7qx+Uj; zd>X!7dV5AzT3kT1m&{7x_Rn|p)FgkFC$&Hl4!s{HXTNT+XbT?*jj2%P zExZ7@1=eN@btpPAz$Njff#QFA5*(0eeMpCyLk2+}C~G*BlED$v_|V4+a^Zo5M%TMU z=FA;FQp92?prCh(^hN@A&;ES;n=>9b7GjRbLIg#p3aa|UYBK!{wS-`M-ienItx@m> zr3an`lx!RJ8=yaL9<536V4dcfmS4W5@iy+ekfCS1B#Euhl5$_9MR}j2h429m+bvR`WQT~r{Ya755?@MxcTSUHjHDwABAjQC81(I zgiwCE>z&jpeF1G$EW|=x9V3s6P9Jxg75LgXytcukWp8$Fo2q|ciFQ459*hRTvoU%e zQWJuXJZqsSsMN78n`(6Cg9(EAG0!~loM#!8dR?}s_^PkI%cQCddfqdTfdQoMjRs-E z%Iy?p(ZF@6MCQMszfty>ts;UMYI<-%lL-@L#+>wIF<=PqX`o2Tp3E2RgzFi2SKXmC z^xk$bc^f0*FSCCLGtY~RL)OpAi~2XpJR$gmO}A5@JgX$p3~|^C-M>9qcKr17W4={Q zg0y2(0Sf88KUzN43`cu_JwO}(4eq!a zaYZwbM2=KxYWL^vDq@!(9p`^P8nOv1k80~K^}Bz#uwXRgx|oN|ZN#svPd~0>=Rv_i zIj0b=`wYZP$}R2z)_ra<7S|v0=avQ^0gUjBzFi4xTsxu`%aNU&HsHMjgvkpz-@rA0 z)^=V_$;eyB5N=u#mU}3>{u^?ykqyCNs6k5V z{wNRw$*;Json_7Sqx}--t+szXVy3WRx>0d(ATFV6hRFe0H^BCz*A_bi?zLc$P~4b1 zqRB+8lJhZFQAHt$l>g?-1c`N)3zzeEHk%6mPGd-2*pxh8Cf0X2yd z@+N)GDf6iVy&e^&g0A^_9GPodkJ{1&sr$P`FHHF9_X+oT)*9m*ur#dYyG!&KZ+w3Q z(>lPIBdyRM6(@-fY>3sWP)dj-31$?F8N(}mw(P^r29>s!)WK6PY2q`St)vjo(v#`P z>}>IO_##EDPfU5^^WMm#gvcz~ijUC1ey^$GAcLD0s}V}cRb0eu$ALmCR*3dPD)^Tz zBf7)g_Koo+{Agc2`K+RHXUJnK8 zN;xiRBa|Jh;i5@L4>x31P@dJ7?@e31gUMzE-nm~5GuG891zMN$kqgLKk2ar)3&=%p zQw4D(^Nv2!M7}Wn@fy)um)8W;u2uw2S+EESdI# zIc_%($IuVxdq*!=^#WZy@xawKM~_Lv&Q>>*{&{NUq`Ppwy?w6j!*m#kgOU}n##?>{ zC02On#jNJ|wAtPEj`t3nalFS$-@NyF7Kv5eaNl$fo~CsJyE!IGN?U*LN!PBkfN_Xq zC9J~G=E6RE+A>%YsvXDKU1Dg@&{GT*nM#SMEvlI9b8$+Mh`qll%n`kJAs%9U&Y04& z_{(v2Hb^KbGxmx$DjUH0^nwoKop0#~t0Y{AEcrSD2}70c0hS>(J6EQLQgAd#F0u=@ z?b@-A@5i`T`%#*WdhdUt=-EmcM(@2uhQVLeM3*|sq}*QZ{;=$@JbpJ(u`B0^yP*2}{!?F90m@Y!)p1}-z}Iwl&tvYkczzXf!Ik)n zlQl0C^$(iZsxN=QH@Bb;=<_e*2njRbGWcYB0odDM;wQgu-B&?U{)(NNO1738JeSp3 zz%+aidzXi5Hmurl((e@Xd9#GYwLXkYjd&_^gguFK7xY=~PQep!C8@;) zYshmo)+H(@pSQj@*@kjK0=Hxqns<iqpW z0vay5-I^%EE6#RpD+KlS(q^cXM2@JPcuQ$$pGxFFCDC*hjeL7x_v8_+V47Bsx11us zKmMUR?VPXXXxi7=dE>v9qI2p=it{_jnO@E5f(-!EEX5vaV*KYruJO!n z(kOil>nML#J_Ul#e#Qb<^twewpL_FnsKD>NmGd^ChXM;+$l%uv>kzBFZJvNanc;1E zUm!GZx-hqpybkZ=WzxjAOMK$NX^2Ub%rqlK(3r595R$^vciT%ywjknY zXsD=2o{my=+PHJy?;$l&w0xp{yi)W(0tg7USp0uI!N9_84mTTC7+i<(7wB&x3PE<# zA&Px%-buyJ)RYZKp>($EtbV}yV)D4sznzkn7b0;684CcvM9ZFs-djc^cPI_^k~3lB z8jog~lGdQ9nrxZcXQriB)y>3qF20t&)dYOKhjdNAqW5IRSk#@_3%FtkJBh}>!#Y;f zcM*SA>CqNN-|?FjL-%~R5$Tf+dC~?+Xsm)ltP%3wh8BnJ&B2-+ShC`PRI(+StkZXv z%x8Y3G31+#K8Zm$ZqlqQZhc2*L@mLEDIhhz`ED3h6u;3|Z-5FHZdIbNjkTjNNp{hQ zk7nm@N410>o}+5URIto%|GN$pI0}zM8%ckZ&CkXYVTSCyTi@EA0XRtd-gY&E9z}4~ zF(VJ0$^7I^=87e{|C9EzmbdW;CjIZfDrA*h@Il}``wl8IT`ancNHOWlVM6SsHkt9| z@J^Myr8%uy=JC93V1&N;6Zf9oz%A#u^YeJMc~W_&@|3`u-nXC2bhE!R?XlTh`K5mf zuy>ZgE>6!pSQvjKU?<&I^p9+)C{VUMStHu00Vr06G#sTYC2oVX4>gi1U`*;b@4SMv zJax}XsPKsyUk#JC;XkeFJsp)Odk2XwuFX1--xq|0vPf(i$sY`+>3Jm!;h@|d$_1!L zqs$vpJX|Sq4(UgHIHZ?0^6;4(gYbW|+ZrQLCB7?Q<5co!4?Zf)Hc=tt#7!XjU&-Ed zKS9W|-p9~%Nl2$rfp)D>-PlEBX``zoCU!)p*aB@`4FB%4>fu^A1tG<(ZP6xsLZ*!{ z95I?85qW9fa+f@rsfJb|YN@54^K8wtI!Sn-G&g`sGiUCi!HoiMHb74&MdE+C{5p+~ z8i^U;-{c|!5qDi(2%?0O1HeC8X<2obmk^U!jHrYK+T?>Gb%q7uUX2?_?(MYDuB-5d zd|aL8j0f!J-vL5(!He0+0&TL^v1lV#E~UOB4S84MuP*%^AK;yY!=!tZYMJ%z*hB)S z*MMkb=0)B_O-LCOq=lmzJpO+(y*DEg@g$OW>x(v}XVDjH5CM7JBpqNkz|Fq*svL z0zhG1_&PV?z;(v`jvX<2`qoUNfjq)E4YBJ z!PzoqdXpKUJ9E*Ap<1rDb%oPq1U$cbDe*yP1$T}kXy^vj`Wp`%c$gLm{;@}l0c&LK||WzFS)!NPXug<>E*WW6-WExAtDRQ{s-bY zd0O<23|s5iDj|52!`1hUHO#bdY9O`a{x1cbevH}JE!nqVW1@ea$?wLOzr7B`PrkY= zol;7!d%b(-i=}?SmZ%s zfh~WPX(`WHgeDu*=-?8WTtm=r#K&6_{K9HzWHK1#ts~>;lW@1R#fW@=TRB1k5;z`bR z0q^S$EFzQgA&xp%EE;o^FN7DR%12o;m(J(kWg`tM>{u> zZ$9K8+!mTBJ$YRBfkFEhds@+GV3ja)e-dsF@m`+(u!~RF3hZUtcR*X`pcifgC&vdX zeiCkt*G_*M=3iLT?fKB&nbu5Q@_Tm@YB%X7qo8smq%EhkGz#L>?jx~B`?0iHygpu- zA@GufAaW4{#f2wbtMYQYCk3#*doNg=EXdh}!|TiPlIGnS)9*N8Dz^CFueU4O2z)+@ zda9&IY2Zi-)QDO`I@gRkdOHpA^z<|<>-6==w?xvP)h*@KL7#%4gkiHNLh(jO}=+2004-L0RSmK}U?`vTMY94=zO2QuP?9 z$UoEkzJ z+(UBtl*PAh2u6wP#I~4RxXu}h<=`30$e8J6!^MAgOrnrVbq@A>wRF|@jf0>c6IXcN zP8lN8lQ)Rd83hLwlUsxli3lt4v3q2w={o??pAL9S+>mDwLfaVWBZeXL8uyQ>Mr%v(uHe6wU|cyL;q(or zmBYbh5q8NkMtq}U8k`2eOenlZ!Mmoq!_PS6{rum@1p(#Xm^=U5ca<(L$TK=pY-J@d zdll}MW6|&q%a}(BM{$ioT@STt^TV{x@E8X}9TSkhS(l|gkjQ`1!yQ&{Mu~{gJE5D& zG!!B~cQao}@Le9~EcY#ZnPsXay|kUfS=7QdyoI-u&8)5^W2IyuaRtij$1ups0A3vI zHprk=RQskrDH9~BI&h?XqVxxQlteG8m&_T@mXhsR`uBMRyMopf*qG-8T??0={%&_- ze2zJYM$oC`@1%cG0-fZwy1O9eq#di8u@ok_8jx`7L|_aE?(kX6MbVl4g~;jI#GJ<+ z5?nIM0;a?lGFhcc*F`qjg0l5gWNzSh*WiX|;s;Wi4s$k-28`RRQu3g{f{qK3V~D5~ za0{=8_8!QGfvRdYgEJzEJPa!;bhPF-B`q_eH5~DV1}Ti41|%qSSwpebu=H~ zLcJA4UyOewFPSeXt=UL`{aX@bclK(-IxO)pBD*ucGe!&TwpMF>Mah|5G-nGc1cX+0Ljf~U zS4)qV_||R=SK8kg_~hq6>*NlyLlh_OowU7|K{|i#T^bGh25n>JTHHnt5W}~MS?nF*0DBAuWlRBal&NGMLJI_7r+4A z%+r5`zl?`FbGu2KX~5Uam2q>cOl7rOXUVarEgwKeqV#EC@BV)Ui&Jb7b?f>Scdfc0 zGx;G|{;1N#3WGr1JJn0Z$8!cf*)qqGnmm9QH_QF=Q6>^A<{1Fc>yV7lR8^*AI+8*@#YOAqnoIv@BN>b|}rCh7dqC~34i-ULR9f9<3snxCwIJEJ! zm8J-s05YDM8hSr<5V;5t;Rj5cGlIf70v`G22&**k@lgTL7|}j>d<4WZTqF?_G0=bC z2vw9rMs{!MLr)V$9KaN;$L!8R^6q#4=5~{f*Por@=Ran-;EnXBbw<#8XRzZmomva!E zd-%=)Pp~jdx7}%xmE-b4+D8xo$gzKhRp2!Z6Ypx~L^T?B=&zzs(2DJ|b&tv4A=rtq z{Iz6={o2Vgf7;GX+rvu=H46^tVEY#0WA3AEYl5_on9D3ZSygLcQj{u`#++wlzW~q( zcfp4O>x%do{jB}C)c}AqsWdicaEYm* zOk^Y*O7WFkz$x4t94u0WEl+A>Ww`8{iz1|R&3Kf3Tv5>I*K8AICyIX%Mdy^EIt5Ku zPj~pSqiQUC^U95EB)s^mJKVW`P!VC4;{Ms@lggi*vV|(S{uza!<0UT6gC~vAQHfLp zd!WZa;ANcM_Gu&#a46FK}^e~P@;_#rhqU>aBnx)z6JWYegn+4`-Fv_+-2<3 z18EMMEL1PC-m6b-JF9;Iui)UD4|aOEGx9EZ=;DOj)oLU~DPaNYdYQl%CEW(zoPiBj zVzMcRM8#DChYyxm3Q}f^#zBZ|-^J9k=khQT%_ZuR%^97hYEfXF(=g+ihTezzi?Z6o z$LFz9Q3#;#en=r!QCzETAH zhwiCBBXtaXzaKer{tkVEQ4?!@PmZ1Mp;s;X%-FkmH>MPdo9aeX*lm>^ilmvEX9kq} zLNP`bG@MfM;c$Q3nX3`^J{eWGNc(ejF5q}e2#ro^Rj|yv{2Q|Gc)sudL7K$gh2>(v zh|sVN^QsZ6>!l7}27TAcVYzmdnB+NiT{&dlU>NuQ7^2)$_~O3`WZtZZ{cMe~!h3<^ zJD@xNOT7pQ+vJI&Nw@amj(*o0MJ6;yaE z;OF!)cCjT>m!n+ProG7?hEbu>lEuBfI?7d&&EFvy8enJPbibt^JNdbJqw-* zZCXY$@N0rgqQo#>pn=AJgFUE!)UE2O98qM@xEm#~px(8X$Phwn9XlYwF)# zQ%gD73LSq$&dwUdvB42<>5b76T9~zt(+b;}aB=FpwM*IcvzLOmJ$tTxEZE(NzyB)3 z5ogPR)(far5G_h8BQiYB0E^ov4``Jzrb^bWCO#{T%dKsRAD9W_q3M}Sda6hb4%Rh) zu|%U%sE8fz3iqk>zIbP4j=-?RgUFyy#*@2gK~{f8k||UI!I4~qi4c~EnIuz3D-lk+5Pl&U9;UPToQoFrvyo)XFY4$ai0uZ}bql=1P0l=glBqiQGF9R5 zN=bjJ;J_JlyntJMFn3C7XL6Q^8?%*}16T?B3mnDw2qZSgforx>ug^HwB(51*U)TI{ z8(Iu8mqt+}0?v@98tNupOD=MlX`rGhq#v8-0*rdqd}KMU0Lu}u$Z96=)Ul9X9F?3d z%3^}ZGP9iLJ|^>6^@rlD-hHFTph|EeMsk1fAT*jZ=#kU6Zw$fJD4Q>w6B(=UNs#8N zIB#2fLJZX#AJgM|U-sSsmoQbaBf(3R;2Uz$2r}H1=}Geh0COZkrbd&-bx+-r8Oj`J z$41uZ$-Xk+9e%6ea`qPHzCmTh2{p6H(^t9d^j5cy;ZzI*=JN}AVq116C~}(!$S@^fw(#6z=63(!7+!11FWffc3KaBoU^E zw?-rMFHk3Vn>q0cSA|@}I)}Z{ye%wJ82$_%ORcB=6&)VP5#bI=5KBOn1&H#gzrzG( zlsRMZw}N{;FxO>4E)xi;Q){yoYwds3#55R3Ku(ap}Fq`V+aSdq~vYIP1&lbwx*{4s*hXH3vdcs%P~{&c1L zMQn>aIbSnS`xwRF0eC!rO=+5kDOi-7skFD6B#WXG3z^*A!pHAUY};h1DZp-S=;gbS zMfeDt8TUr63sy3(P97Z~P;Y-0th^nBJI0-qFDa?_m%mm za6~>Y8UN4-^m1fH)_}hiz4>Vs2tj2p;NTDrDYMe6c~aGVwlyl3ZVx zhsOW;L?%Xll{xO+2vYVU#pkI09BG+;;a3Th64{Wx(%Y$Jgah(ZfY-QDzPdGg>7ybl zsF!S>)jdT0I8e1!@*?m!%nU6?ZgfyEOZr=x#~AAgfYjLB7vNR!*2 zTF6)5=&f!C6I2)2q;r?1Q7LP*r%c^NKOH$EB$R+IYNL*fw!$VlZr5vSS7_fLT5nQ2 zu%dQ5YJvl~Rt~sgo;04g6XbQ9MP9hB)%;>vkUg&+LW1VUg(dJ^szc1w+==TYH4nx70os>)sY$FcClKISOF${LSn&$Vzl6!( zA0P*pU86Md=-lnf+pyl`H#Atmg>K3*Uu1!+_i%{4tDsB|(48Yw?g$uyljn=}S&gi! zWkOD&{9k7|IEHyTa%cyUPTI7`Be`{g2i2+(q}G3m4ahrSj95_nn4Q)TC@nQ{&*~%h zR@bWidOM@vL~G3eNz^U6dDzp3+KmP~%^R!y)S!nO`BO{c=YP7`IHQx4mW>!^Sk-DD__R$a|Y?d8lsRgeVk>anFg z!weg8H$ZWabBzInT7?|hn>TsDqBmeM#kTK8fq zDVM|M2&s;++gA!9j zZS+UUU)YCJ%=|beO}SUL&*(RlahreM6i{pFA`rl+MlKZ&snGn_}~_d5Yia>8hdh z>Jk=$jnA*yNV1b8e3THl)p8gU?H{HGI;7BkOXPR9r-hc6b z)PL~Kt@?eY>azYjn4O`C!t@&K_KsetsfWsMpD)L_`Z&^PaQDUso~D1~Yoj38Rwj0( zx3Ty|7+IwJS#*#=PQe4PnppfpPhXY#%3~SxlN+tobVaZEIu!7@C@cWpB9Sxv7iMn} z{!~PW_79s#mbGFeL1xU~Yt=9d6c~+->lfHg7KM|O7`E&7-UFZ)7HtN%lAmK(XJuf^6Z>!IYUP~-gY>h+gy6OR(CI17HOrr=-bMl24c zMAsmy2$UaHcj=@7l7fMz`ZdK=;O~OI#xSpy`!V*G-`YejXO)vJe2mP1{bNE~3gi>|?TqX5i(tr>q8)#;uuqw-!}M2q8-Qq< zi}`@WY*0vy5BFzlkH|vgAEs+s4&*)B;&vJ|VqiFrv5kcjSh%&R$|eS5b>IIh$&4w( z)=mWC%EcFODZA)IC65fC?p61O9V#rM1x`?obz}1n>A%8hVo!v zxWZZo-0z>H+b@6Ze;Y=-7s4zYL2L(;31%;@oqlLP7=$1Sx`g4vf1dqVEvULBpJ$?+ z_(gNJ&l@)v>4uwB>bDh`JH>nGzsu7BY>V}c&rQl!RRCnIiDc2-{-Cor;%e+_keYMH z9H*FDuz)lHl(b7>)I3HogL`7fh&r=(E#%gzk)KB(`*RqtW06>#9qGJ%gVibbbCBK4 z>Bb$no^pRx=?H0FJ!4XF%Gk3d1&3aa{!_?n&t3dG+(>_u_ zu(Xk=BkBNVL>yztb(Sc=j{ZhOx+SaUSq<;rJ9~fU32ui%cOa}lku3gMgu~htdCmet zbM&rZTyI34aP4U5@2l6+J#+ux7`W2uO@LTHu>8R4h*zkf4(ZjmGk`b@5-S}70yRPuTEveJLU)799IxdFjxmh|cl+Wg;kHyNAj@&J6en*? zewtMLU}|Gf*{z|AY&+RAI_!b$q0bpm3NP~g6*}z@S(Sg|>hAPP zP`2G_X+_@f@hJL1w|LjzUjY-(vv8QT)Y!bPBf1*O=_u|b z9lt!gMx|&kk6b+5!XRHVS6RGELD7FVWY?^U3@Km6;(GTc^{mh74)SngpHzd8?FT!f zYBrZgypVxEI;mCK9M4~5(u?Q)?XzkL zrbtOChm69!+7P?ah^2$&c zb(zn=cZ+>_>hQ%$#{P0FRcb>i(p;TZFI1XlQ)j~Gv&UK9+mT+DJRR6uG`8*7_@ zHfWP-n;Tc?;6@saV}Bte+L4UCuD8fdHefBdT&Dad4?u)h(B!}DMD=PR>>}pXgRmWP z2g#vy%>?PTdqnMN(V2gRa#)R<_LF8B-%&FU)O)UDRYer?aZoyq#(y!Q;)>S_EV;U35K5VwW$*|?&rBo;8Tsh30?i2C8U@7>;`!h%s_RvZzBrzRu0JpJ}igug25VV@8tz5hl#tluKXz zsowa6S47TtI9F!!*CH;7sGCxD!L&gJZZcq;s~(imi1xj1OMrwucWj-J;*yGvik<5r zX0{)5Ye^gzDDpL`e*78FM)C+oEMkDya)n7QCXB%hLn4bYbO%M-P{Gr@obA7%K=i|HTdhC zm1rzQ!$@g(EL$T@CP4f;{SKVh7;6Ks>Q2fV-U1Ql)r4NgvOKc@ms>$)x@y=w7!5Mf zkb}D>O>pL_VfKYjRz)NmrQi|Pdu$HKOlg8*9!OwSD~8CjC!pSfgN3A5?j`6K?((NR4{1J z*ykgk7>B&B0U7Z@6OGqAD2)2?zTUJA_i=xKN~y?MAO0f9CUn9b`KgQddiK9zYz|dr zYt!wjJO--Ke0q`6i_p2u)+g0EX~Nlflr>XA&L_1!)IJL4sP&owfZNq;M5!P^f5(sW zWP|0Ya5doT;r`{uR`5+x4>!llM7F}Sy+BEqLl!;gS2GxK(yP-b*m}jA+#gyah|z!W z2;Rj=Wij%hEglw`JxpcM9|XR zVY}=HHRhWe6NPSsCvj1XoAF9I&%Pc3CfUR;6igv?=WDj)fQBB!D7X6+L=e(2nQESE zEHmMS11Fx9tfbYp3;r1(EkFHeH$eJtMlqlHZi|`$Do4|i+%T7_f zEl2+@S_mnsff&g~bpyF@_7QwKWih+GE*J2>@CQwPwnehjFK$GBPZFB(=D!%Z3fe%< zJq9bm@puBY$RtaECVD$8%zG?+xW-TNiB@ISM_wU$l81;^W=#@Yd+QR+LDFu z`!|LR!Ms7IJx5q7v8+fq+*p5dILS^^3uAyPRyo256wS>iYxqepj?r10mFkh`1FJs} z4uMy4cX!PT$A&i6t<#C5|mt(r7f_Q^NR`lQuHQ_nt7qN9HuBUEn|Nc%@A zke4zv#S{-H^^9i}e+V8GvlDl2+80tOj>tyksdf2*S#+jzpxy zd{d$#cl%;f=~i`o5ubmON^SMpDga_TW~1L!(936{X$N{2ei| z1=!OQ3>ALQ(p^`V$ee6_c$?KIi6z6_8(J;Zisc9ytbubhK0$w=RP_(m{8*j?H(cZI zX@Sb?Pg!rHu^LxmZuk6NXL7n*>lHE<=~zPHH%4_+i<3xRnco#wALKwJW0M8<-5c~w zzgjnkL9V}4!SbwtLt<1Pd(g1Pwwc0y6l8ra8yi|*$BYtskcqUCOBb=q2na*&G=j5W zRQQdR_+XNo?LmLn!$tn;?00+Ukdl72V3vh;oF2gHi^milT{k0rkUe^$(cFFx>Q;oh zYo+Av-kYv6UbVpFV2iP5!kI~ciLM~KW0fsNp+$UxH(L6vtLDQ`X9fKNcCJk?Qn3LW zN2XuQ5ly<5-!YH>thhUj9$5Exe9t6}p);cG(;k(UATWQ3glY7OdOt8+MAQ=;H>L%! z|A){_z&v=R(>5VIji4gbv9(>l<5&U#K(`$Mmj5~DxG8x+VtA|7+g17)%KFyI2p3IC zje1Uip0Uc7Bne0d+|(I(%jhnSzPv?JBec_-d8P&wIKRDn*{+(>cfp(l)FgdwCrNEv zkm0$?eI|eE&*XKhRg<_XMBAot19@_GbU(~@S5B89bKpI4lYU-hCo<` z*0z68+-V^s0U;U4)ust@Ur#2=SaW(!d}zrrBv=YxoH%0O6-}1#wZwLWFI+d+56``% zGx(OA)KhKP>VSO0!zemcX&hH=bo6jOD3J2Pp9?Kd5S%au4ey_c3;^joG!dWo+2rYA zxc;DAZ9Z?N7nw4B8c3Zd<-=p#>b zzh2r&18_=T7y}2AKsUUZ+*!bk=7F8icoE$-h>t22pqT^FL`;8v z3g5|Ost0s%CVwfbh19@l+OXgtoKfgz+7o>0yLyB=zpj6>DY+_hFOsJz)R>)u#iEOC z)j3ZcgERw`S5?On2J*y+$e0ESMbOW>$^!T;J`FGjL)A`MD$V``)t}R_oXh9}&g0My zQ*8gvdj@&jt2c?42U{AQ4%1FdGERS1nB?+}soo}>$WX)HhtfXNA7z*|X+4-gt^jM% z;J+y#O8jS+cSU)c+ofHUbFAI*>k;jH&-JleDLzb`?4ScJAMpRJK|P7z4i*r4j+BihR2Tgu+-^)`&ITsyXz z4MN58fyy0IaToIqr$yuAL;E?c6j?zEp<+u$i_t6~pcwja2JKb&x`p9#RA_~%iT~PA zN+)yd(;Sv=WW@6OZEHg=E0BN5P4Xjy%~=ZM8qD}omNd>h;$d458j}TBuNx>eqY1G3 z1a&u5+!%~s;2El*UR1Evmgu`m3SCI^nap`8jgrJ&Pc_Xp*8D6`O=?eEL4=Il+j*`k z55d29=zHYqUbh6_SEreA*U$t)3iD-?O;a0}zsnqD66CYb(nS{=4sw6dK2CM<_?3Os zytcLL#}TU8MrP?k2N-Z7H^Oqgf^vZh&3cTnS8Nok z94DcH{)aBG8N7gSBt%A65{@TR&&1)QQm^MVqE{n!sZfGaaabB6YRFA-@!4+YO4T6G zGgSdc$%!>x`>+mOa0Gun>>Es@S>~u`Uvxf?le#HjfTpbYjcT+~?}Swz=;lo;a~B8; zHACTSm8yua`nJ-3+lL3~&_Gy@(vdUjRSN(-)$rK2(14Mc7vAWbm@B|JHkB2fH!|L8 zD)ACCY+fH1$3WOi#Qyn_V;xXS0Rle*KL7#%4gkiHNLh(jO}++qDF6V7jFZ4DRR+c> H000009@B block.timestamp - 120); diff --git a/tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol-0.8.20.zip b/tests/e2e/detectors/test_data/pyth-unchecked-publishtime/0.8.20/pyth_unchecked_publishtime.sol-0.8.20.zip index 178b65b38891d69b198dce4828330e4d726101e8..a3c8ece9e0864e7e550d06c2e885d691ad203cb3 100644 GIT binary patch delta 10948 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 delta 10284 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