Fix transfer overflow exploit. (#824)

This commit is contained in:
Sergey Pepyakin
2018-09-27 19:13:14 +01:00
committed by Gav Wood
parent acc83202bc
commit 0d284c0195
2 changed files with 20 additions and 1 deletions
+4 -1
View File
@@ -287,7 +287,10 @@ impl<T: Trait> Module<T> {
let to_balance = Self::free_balance(&dest);
let would_create = to_balance.is_zero();
let fee = if would_create { Self::creation_fee() } else { Self::transfer_fee() };
let liability = value + fee;
let liability = match value.checked_add(&fee) {
Some(l) => l,
None => return Err("got overflow after adding a fee to value"),
};
let new_from_balance = match from_balance.checked_sub(&liability) {
Some(b) => b,