File tree Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -74,21 +74,27 @@ async fn parse_constructor_args(
74
74
}
75
75
76
76
let args_size = constructor. inputs . len ( ) * 32 ;
77
+ if bytecode. len ( ) < args_size {
78
+ return Err ( eyre ! (
79
+ "Invalid creation bytecode length: have {} bytes, need at least {} for {} constructor inputs" ,
80
+ bytecode. len( ) ,
81
+ args_size,
82
+ constructor. inputs. len( )
83
+ ) ) ;
84
+ }
77
85
let args_bytes = Bytes :: from ( bytecode[ bytecode. len ( ) - args_size..] . to_vec ( ) ) ;
78
86
79
87
let display_args: Vec < String > = args_bytes
80
88
. chunks ( 32 )
81
89
. enumerate ( )
82
- . map ( |( i, arg) | {
83
- format_arg ( & constructor. inputs [ i] . ty , arg) . expect ( "Failed to format argument." )
84
- } )
85
- . collect ( ) ;
90
+ . map ( |( i, arg) | format_arg ( & constructor. inputs [ i] . ty , arg) )
91
+ . collect :: < Result < Vec < _ > > > ( ) ?;
86
92
87
93
Ok ( display_args)
88
94
}
89
95
90
96
fn format_arg ( ty : & str , arg : & [ u8 ] ) -> Result < String > {
91
- let arg_type: DynSolType = ty. parse ( ) . expect ( "Invalid ABI type." ) ;
97
+ let arg_type: DynSolType = ty. parse ( ) ? ;
92
98
let decoded = arg_type. abi_decode ( arg) ?;
93
99
let bytes = Bytes :: from ( arg. to_vec ( ) ) ;
94
100
You can’t perform that action at this time.
0 commit comments