Skip to content
Snippets Groups Projects
Commit 9ee24272 authored by Gavin Wood's avatar Gavin Wood Committed by GitHub
Browse files

Avoid multisig reentrancy (#6445)

parent 8c1a23a0
No related merge requests found
......@@ -553,10 +553,13 @@ impl<T: Trait> Module<T> {
// verify weight
ensure!(call.get_dispatch_info().weight <= max_weight, Error::<T>::WeightTooLow);
let result = call.dispatch(RawOrigin::Signed(id.clone()).into());
T::Currency::unreserve(&m.depositor, m.deposit);
// Clean up storage before executing call to avoid an possibility of reentrancy
// attack.
<Multisigs<T>>::remove(&id, call_hash);
Self::clear_call(&call_hash);
T::Currency::unreserve(&m.depositor, m.deposit);
let result = call.dispatch(RawOrigin::Signed(id.clone()).into());
Self::deposit_event(RawEvent::MultisigExecuted(
who, timepoint, id, call_hash, result.map(|_| ()).map_err(|e| e.error)
));
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment