@@ -158,35 +158,41 @@ mod wormhole {
158
158
) {
159
159
self . owner. write (owner );
160
160
let set_index = 0 ;
161
- store_guardian_set (ref self , set_index , initial_guardians ). unwrap_with_felt252 ();
161
+ store_guardian_set (ref self , set_index , @ initial_guardians ). unwrap_with_felt252 ();
162
162
}
163
163
164
164
fn store_guardian_set (
165
- ref self : ContractState , set_index : u32 , guardians : Array <felt252 >
165
+ ref self : ContractState , set_index : u32 , guardians : @ Array <felt252 >
166
166
) -> Result <(), SubmitNewGuardianSetError > {
167
167
if guardians . len () == 0 {
168
168
return Result :: Err (SubmitNewGuardianSetError :: NoGuardiansSpecified . into ());
169
169
}
170
170
if guardians . len () >= 256 {
171
171
return Result :: Err (SubmitNewGuardianSetError :: TooManyGuardians . into ());
172
172
}
173
- let set = GuardianSet { num_guardians : guardians . len (), expiration_time : 0 };
174
- self . guardian_sets. write (set_index , set );
173
+
175
174
let mut i = 0 ;
176
175
let mut result = Result :: Ok (());
177
176
while i < guardians . len () {
178
- let key = * guardians . at (i );
179
- if key == 0 {
177
+ if * guardians . at (i ) == 0 {
180
178
result = Result :: Err (SubmitNewGuardianSetError :: InvalidGuardianKey . into ());
181
179
break ;
182
180
}
181
+ i += 1 ;
182
+ };
183
+ result ? ;
184
+
185
+ let set = GuardianSet { num_guardians : guardians . len (), expiration_time : 0 };
186
+ self . guardian_sets. write (set_index , set );
187
+ i = 0 ;
188
+ while i < guardians . len () {
189
+ let key = * guardians . at (i );
183
190
// i < 256
184
191
self
185
192
. guardian_keys
186
193
. write ((set_index , i . try_into (). expect (UNEXPECTED_OVERFLOW )), key . into ());
187
194
i += 1 ;
188
195
};
189
- result ? ;
190
196
self . current_guardian_set_index. write (set_index );
191
197
Result :: Ok (())
192
198
}
@@ -210,10 +216,11 @@ mod wormhole {
210
216
if set_index != current_set_index + 1 {
211
217
return Result :: Err (SubmitNewGuardianSetError :: InvalidGuardianSetSequence . into ());
212
218
}
219
+ store_guardian_set (ref self , set_index , @ guardians )? ;
213
220
expire_guardian_set (
214
221
ref self , current_set_index , execution_info . block_info. unbox (). block_timestamp
215
222
);
216
- store_guardian_set ( ref self , set_index , guardians )
223
+ Result :: Ok (() )
217
224
}
218
225
219
226
fn parse_and_verify_vm (
0 commit comments