Skip to content
This repository was archived by the owner on Nov 6, 2020. It is now read-only.

Commit

Permalink
[stable] Fixed modexp gas calculation overflow (#6741) (#6746)
Browse files Browse the repository at this point in the history
* Fixed modexp gas calculation overflow (#6741)

* v1.7.6
  • Loading branch information
arkpar authored Oct 13, 2017
1 parent 5a1a7f6 commit 1953533
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 30 deletions.
50 changes: 25 additions & 25 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
description = "Parity Ethereum client"
name = "parity"
version = "1.7.5"
version = "1.7.6"
license = "GPL-3.0"
authors = ["Parity Technologies <[email protected]>"]
build = "build.rs"
Expand Down
14 changes: 13 additions & 1 deletion ethcore/src/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,11 @@ impl Pricer for ModexpPricer {

let adjusted_exp_len = Self::adjusted_exp_len(exp_len, exp_low);

(Self::mult_complexity(m) * max(adjusted_exp_len, 1) / self.divisor as u64).into()
let (gas, overflow) = Self::mult_complexity(m).overflowing_mul(max(adjusted_exp_len, 1));
if overflow {
return U256::max_value();
}
(gas / self.divisor as u64).into()
}
}

Expand Down Expand Up @@ -711,6 +715,14 @@ mod tests {
activate_at: 0,
};

// test for potential gas cost multiplication overflow
{
let input = FromHex::from_hex("0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b27bafd00000000000000000000000000000000000000000000000000000000503c8ac3").unwrap();
let expected_cost = U256::max_value();
assert_eq!(f.cost(&input[..]), expected_cost.into());
}


// test for potential exp len overflow
{
let input = FromHex::from_hex("\
Expand Down
2 changes: 1 addition & 1 deletion mac/Parity.pkgproj
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@
<key>OVERWRITE_PERMISSIONS</key>
<false/>
<key>VERSION</key>
<string>1.7.5</string>
<string>1.7.6</string>
</dict>
<key>UUID</key>
<string>2DCD5B81-7BAF-4DA1-9251-6274B089FD36</string>
Expand Down
2 changes: 1 addition & 1 deletion nsis/installer.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
!define DESCRIPTION "Fast, light, robust Ethereum implementation"
!define VERSIONMAJOR 1
!define VERSIONMINOR 7
!define VERSIONBUILD 5
!define VERSIONBUILD 6
!define ARGS "--warp"
!define FIRST_START_ARGS "ui --warp --mode=passive"

Expand Down
2 changes: 1 addition & 1 deletion util/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description = "Ethcore utility library"
homepage = "http://parity.io"
license = "GPL-3.0"
name = "ethcore-util"
version = "1.7.5"
version = "1.7.6"
authors = ["Parity Technologies <[email protected]>"]
build = "build.rs"

Expand Down

0 comments on commit 1953533

Please sign in to comment.