From 769bd9d10110addb8b76ed15f7c6ce0e26b74c2c Mon Sep 17 00:00:00 2001 From: Gav Date: Sun, 28 Jan 2018 20:39:18 +0100 Subject: [PATCH] Avoid using the controversial `Vec::from_raw_parts`. --- substrate/executor/src/native_executor.rs | 12 ++++++------ substrate/wasm-runtime/std/src/lib.rs | 6 +++--- .../release/runtime_polkadot.compact.wasm | Bin 64258 -> 64236 bytes .../release/runtime_polkadot.wasm | Bin 64307 -> 64285 bytes .../release/runtime_test.compact.wasm | Bin 13280 -> 13189 bytes .../release/runtime_test.wasm | Bin 13405 -> 13314 bytes 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/substrate/executor/src/native_executor.rs b/substrate/executor/src/native_executor.rs index 0db4d683db..b8c90f2d9a 100644 --- a/substrate/executor/src/native_executor.rs +++ b/substrate/executor/src/native_executor.rs @@ -46,8 +46,8 @@ mod tests { use native_runtime::runtime::staking::balance; use primitives::twox_128; - const bloaty_code: &[u8] = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm"); - const compact_code: &[u8] = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm"); + const BLOATY_CODE: &[u8] = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm"); + const COMPACT_CODE: &[u8] = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm"); fn tx() -> Vec { "679fcf0a846b4224c84ecad7d91a26241c46d00cb53d6480a363274e8965ee34b0b80b4b2e3836d3d8f8f12c0c1aef7350af587d9aee3883561d11726068ac0a2f8c6129d816cf51c374bc7f08c3e63ed156cf78aefb4a6550d97b87997977ee00000000000000000228000000d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a4500000000000000".convert() } #[test] @@ -57,7 +57,7 @@ mod tests { twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![68u8, 0, 0, 0, 0, 0, 0, 0] ], }; - let r = NativeExecutor.call(&mut t, bloaty_code, "execute_transaction", &CallData(tx())); + let r = NativeExecutor.call(&mut t, BLOATY_CODE, "execute_transaction", &CallData(tx())); assert!(r.is_err()); } @@ -68,7 +68,7 @@ mod tests { twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![68u8, 0, 0, 0, 0, 0, 0, 0] ], }; - let r = NativeExecutor.call(&mut t, compact_code, "execute_transaction", &CallData(tx())); + let r = NativeExecutor.call(&mut t, COMPACT_CODE, "execute_transaction", &CallData(tx())); assert!(r.is_err()); } @@ -81,7 +81,7 @@ mod tests { twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] ], }; - let r = NativeExecutor.call(&mut t, compact_code, "execute_transaction", &CallData(tx())); + let r = NativeExecutor.call(&mut t, COMPACT_CODE, "execute_transaction", &CallData(tx())); assert!(r.is_ok()); runtime_std::with_externalities(&mut t, || { @@ -99,7 +99,7 @@ mod tests { twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] ], }; - let r = NativeExecutor.call(&mut t, bloaty_code, "execute_transaction", &CallData(tx())); + let r = NativeExecutor.call(&mut t, BLOATY_CODE, "execute_transaction", &CallData(tx())); assert!(r.is_ok()); runtime_std::with_externalities(&mut t, || { diff --git a/substrate/wasm-runtime/std/src/lib.rs b/substrate/wasm-runtime/std/src/lib.rs index f19de6836d..6969f0cf1c 100644 --- a/substrate/wasm-runtime/std/src/lib.rs +++ b/substrate/wasm-runtime/std/src/lib.rs @@ -154,14 +154,14 @@ macro_rules! impl_stubs { #[no_mangle] pub fn $name(input_data: *mut u8, input_len: usize) -> u64 { let input = if input_len == 0 { - $crate::vec::Vec::new() + &[0u8; 0] } else { unsafe { - $crate::vec::Vec::from_raw_parts(input_data, input_len, input_len) + $crate::slice::from_raw_parts(input_data, input_len) } }; - let output = super::$name(&input[..]); + let output = super::$name(input); output.as_ptr() as u64 + ((output.len() as u64) << 32) } )* diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm index 84d8006b5c7b0d48ff65e134274f8965f965347c..cd507221413e44b6db333d0616a95c4c1667c504 100644 GIT binary patch delta 8825 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 delta 8772 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 diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 6005dbbca5a96f2ab601b89eb12eead782c3a7c6..63e7666aadfbfdef2c4286d3397788e339381d7b 100644 GIT binary patch delta 2632 zcmcJRNo-R`7=UNyJ;%?PI2p1!h9W6^IM*g4as%LGto9^=@I|TKz zj2x5m>R$UlY&odzb_{Dg>G*_Ig6jRyu*SEc?Q}_1Lgntf1q=crgki2&B8*r@8JMS8 zX6on8{Vk6%Vh9Kj>EN+l2P=9STEa*Uq5(a+z#d{w#HXX#5e%(^GQG84NCe}+Zh>#_AbgaK z_)u?YJwv_Jkpz~_249oT!X|qucZi&$I<3>{GW6=v`T}-kzO)!ymEaON6SY=n7{SaV zl!JvwBcQR1Y%@j%BU{seFA0aIWqD0a%l#Ze%MuvA_X^l#xqxcvjiK;4-#`%get#dt{eu5pknz$Zl zj1l81(m+-OCk?DB-~yIHAM7e%SH0%oF_LT_SU{6rB<$*#IRSnHcGhxPDoSsGl^J4V zdvyc#Ordt4?jbcjwB!=;nrM4Xd@h~B`meQB&!JQGkXd`Ho=c~2|FyPi?Vb9IGP>%W zN}P$}+g-afs;?BoS1LpForUjIt45Nv8!2qCL1Tn;8FYglafWZUz{?UR9Y+`Ekc6U^ zo>8Vn^Q5&xYw-&7R5+ZXI-D3F$u^+@hZA1bq4oW$9e`#Xi)VbM#bLUUSFU=6Ss2be_ol~Q3dr#ixzSraN_)#JY zHV+kWG2VA1?<1rgDUi4e9$-Ob+>3ke__)ZSk3QTjhme40EBiQHK+i^$=8)(>a!7%! zMR=t8V>eDcsjEe}jS*nwxpJw+IHWqY?lkvDl;>CX{9oS0O#ZH%uc}6^vQ|00e_$r^!9G71h@mP zHq4-IuAbM$;QT3ggUDPxr-*#LYH|nIV!cYaZ9|oM-Z(xnIW-Nt_rS#TNpNuy=e8Dc z3FjgPmrqYj!_3*K6I0WZI#6Ey*1NvH#5s${3H}@4V#%uvAtfX>oZ#;_=T1uJsz36v z8tjX8Ty5Y2P^Sxa-Kv%|uP*krca+d}7;S*I3rO8G-Tlw|HgByo@Mai)a~5V#SF@ec z$z_9F2tOfu8$d?AHS<9}rUqkUqeMPLhYDI-(Xei1!%C31R!2=|HL+6CTqCcmRx_{O z?SC;|Zsg(uhSu|yLk7Jq?xVIEx1$!fQT@~(Zp}6Epm$oV<_sL4#e?S6v;HG=u6QJ# zq_j}HHgJgINdJ;JKo`}K#eF|`j>3aZ9;!5$$pYN!zmrwz^ct5B>&DTNy1wn; Ezgw8o%>V!Z delta 2828 zcmbuBO>9(E6oBu&@4fly?XZ*$_y1)dI!EvFOz$|J)qJc^5f`ultU_q2c7bIdris!!PbZXLtv9sv+ z&d)vf+;h&meV0dzquG6o{+8=y-HfFT^`1GS@uztek^9t&Xl?ErcP*{VR?CRY2$^Lv zuL_=^FVi4{ve+QMqB7l-Tk))T%&aN%U(~MDJv3vi2fW~w;Y5rLAoHrGZXaD#$Ldar zB`e0Fs6(ech^OlNx=uFZ&i!6@pNbo9$A~`KxTNkibb79M#U{e#ta{OKtNIa-vExu7 zmyiQ;LEUZqi(RQwx0`x2o;H2X(pBnXe~-ow{ylVAE&CT+t{cF>EBqKHV~7AEZD5AX z*5HwU*>t4t8AkL20U|w^b{M&=+5^pWPQ4yDLKjpf;HQP$*MZ%X&Z=KGCz=*~F(!aX z7Gsqd9swxLs*_vV*%P07vH7TfeV3&wb!y9Y`Y2cb(h#MO)%(qVv@Hg7T7>Xr%B&Ro zND@iH%#`9>$Q5HI>j&y1lB&;IT2d}aVvNXpL>k}{Mv#Fk%t+9XAh~eMpS7NWAw04` zq*u6EzjO;TWFGMma7iq&2`<3;YY8KH5S8fB46bhG3A%MOGiW(M_0EP~$OPlyJ_Mfx z-*kg{Gw4Bsr46Pwc)&dq#EpPz6+xBM(FIo01b4MQm>_G-hbZ?DnWp;Gqv~yFr&L{r zzSMUHGuIryNX~_D7*@|8#Igh_2MZG?pwUNK9ch~*ZFjIkqnC6z=yVWuu*<=22VD;K z*hrCXM~pex>!8QMJ_o%H`W)xQsa7H5k?$WkpN>=@Fc)23AljuqYw5Ru;)y-1Jj7H!(izV z)se9015O6ognhTV*?{h>3sP2?^@rF^yO;QUxZHYh%>-R*TZkRDWRch{cG)f7c=J*^ zy*~0kySMS?rR=F$)4d9(Q2(ua8*g4}L*3g@^U{p5)S6c>dM;$F^X3`)%@cs=BlQ|F z(&$J52U|3HNwb3%`$aJDCJ^wg?(lIqnWYOU5r-#PJ<0CM5;zDw4a-z5Q;>4w?p$p;2pnA|& ze>h|En$pTi+rwU%HM#XpM@Pp=BJ(Eq=W!>zWl7c|q!9^7ObN4nX!3FOAToZ4$VH2b zd34mrx#=OqYdb7i9Mb4sg;EBI4rCrFkmWE>EuK;LBiG_Y&bZ5AZebYo#eHVo+#kh9 zU6nzku2s1zH{3j2%CUeuY}0Gd3zrjtbRo-|EvcU(xBIVn%lq6}-DloguHSO~C#G5T6)tF7~fRQIBD48J_j>^e{3 e@h0xq`|8n)BL6*l>40vqKO0!Lgo~=T>)79G8TeoT diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.wasm index 45e9c3bf2327d92d207a100b1838c1f97ef1fb4e..c1b257f3a313526e610ecdd3e0fb6fef413f1b6e 100644 GIT binary patch delta 2627 zcmcJRO>9#~5XX1-Jtwv|PL_N+CM07wq%S0~6Ch4Vpkyg2sR|{heyD0yLIR1&2aq7O zDy^+5sw#ny+XYTkvQ$;-h04gBdT4#H)JUzWsLBDgAmzXTsVcQp4&j12`?ikLTQ2zE z-_Cz`XLe`iJ^R7*r_1{qXM^AapL7y&HipcqYjp?cUA0p8 zo+x)+M#p`42Nk#5#{jXHqsx*_hMo$*hXk*N~;T3I!%Vl-B@lMSekF(?8 zmj&dQysi#5J!KmKH4q%sxDdR;iUIWuEyRUjgF4aNM%UF`bD=F`0Rx|CMOU9&0uUQ$ z19O!Prp7~~b&t?%5C{~DPwSsfKBU7E!XHp(CFv)UNa8SCigOXn zhRsHR28hHGc%Ut5OA=>9t`KQ~EvzsB+hHV3B}gv(@)xZWpn}U)B7MToMr5V1BWyH) zD<$U91{)ZH`fjYKdG>^69g^ucG#VGrt-)*0$j zdlHxy8$31o7B)FTxtGWk)z_LY%* zHKeA7mRu)p5pB1K&!tkB|LvCQIaDeD$?ccwxl{_{Z?{z2uhd_Z(JjwZ@3{y*-Q|}? z>5*diNF|8?XvYJd18usNB-KsP7rXO7#O78}uG`c$dU}I#k)?#x5<(8!gzP{Pe2w$qDym)DVn#iQc7r>cvC4b);U33Tvlg$N zotZejaB(VjW^O4qw=fyKxJcxxy5jV*l&${mZs^I_-1AN}8hw|@tj&X2+>I|hlJOAI zh!jW+gC|(A`K-Fr-L8J#Gxjo(cRgIBaj`z;Z7(4{cTvH^;XH1sMk|HH1tg6W$g-=4 z9-gNE`I?;}@<~P6*B$hQ8!+HT$J>9BbW(}A-^ByM*dR3OR` z3zhtCDdLwS8{TrfA2#EqedTm5E?wMASJub*#D_~$Ff%_n^#S0ominrz>xH6^d%@8Y zi>RgiyrL5p&cORbrv02EGJbW{iLq6`&U0JQ&#Nb<&d$uk!9y@LKM4+Q;@s9IZc*di z4X=pnx90=b(-g#MWY1&3~;gTCWw$c5_^H*PdDe@5q)L-k&o1O z-JMNWtGEEvblz@QrL1Pu8b^ny%&*rF3T0)1DWj zg=#L&qgUN@X=K3lzJ_YaZ&TTCwR$}os!!MOfO}9(=OUb1!ZT*n<>;FaD(GbX8^gZZZ4=_tM@u3iq0Muvle!3oz9Gd#l*&RxT6Lm7{r8yZ^O+0Y2#2 AdjJ3c delta 2719 zcmbuBPiWLf6vt=g_h)xA+0B^0YmCYJZDaf;vAY{Jn`pFV#9*L`_R>=N2a_0+tR`Zz zr4?;=DWM1jNtx7>loUL8P*~YROAmGnfqEz{gdil{bczili|Tsa0lKUn z)V(cMtrSb54HxZ4JXNXs1e*^OChEVZ;!ePK;u`H-RYQ%5;I)uwBU~=3tBv<+9`O`A z0abDpIV^9fLrs6OYZ28K?bo;z{g~wUMK0y{W!!9-_BYct@136gqb7rF2of-jYVs zshtft{;{Q-JqfF;EysNmTaBonTDs_?!Y4aND1EH{X#I8farIQ$G59 z^!qsA)jvq+TOM8vR+bj~0!Cq}4~8 z_aGSfCJ@zVfi%_#TbD#*rtV}zPyLa$imWyR7@iG#Sd@AgBcxb6I{6zFe-$DfU(>Oi z!9|f0QcDOqViK|qN$@9vN7vBWjT6Cq>nWT!c;4Ha_Uywwu4gS8y!OJ>=-9>C@x;05 zOk(=t+4$@nk!vdHCh3A2aT~kxCb!;*$K!7iSu}aHh@0`nN%9sUjYvS^DR_a0>T~zf z;bn`9C0wH~cQ;5#$n&jQ9CElag0lrAE+9)tfviM$s!ny@7@H4NBHY6WxD2B&26!}y zL!I6kq)xh$-kktEa4tIG-O2G8n7c4FHZ?P$EuU6l5H#DuF z^9(uxojIgdP0L^0vukfI%xhuvoeX3qOIc6pBp1V6K)|nQ5*hRM+zRtyb)swd2$4^4 z0YOJSI<}Qh%td&8sn>LRTz;_f$BBV6P#f^M)SWY|065n4-en<{Z@ zc%v8ZxiWK^k=e`~jAZbtOEo;~rGT}5Zptes{u*5