Compare commits

...

2 Commits

Author SHA1 Message Date
s3krit
9bf6ed8450 update version string (#11362) 2019-12-31 16:35:10 +01:00
David
b463487b76 Forward-port #11356 (#11358)
* Forward-port #11356
2019-12-31 00:11:22 +01:00
6 changed files with 40 additions and 10 deletions

View File

@@ -1,3 +1,10 @@
## Parity-Ethereum [v2.6.8](https://github.com/paritytech/parity-ethereum/releases/tag/v2.6.8)
Parity Ethereum v2.6.8-beta is a security release. Valid blocks with manipulated transactions (added/replaced) cause the client to stall.
The full list of included changes:
* Make sure to not mark block header hash as invalid if only the body is wrong (#11356)
## Parity-Ethereum [v2.6.7](https://github.com/paritytech/parity-ethereum/releases/tag/v2.6.7)
Parity Ethereum v2.6.7-beta is a patch release that adds Istanbul hardfork

12
Cargo.lock generated
View File

@@ -2626,7 +2626,7 @@ dependencies = [
"futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
"jni 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"panic_hook 0.1.0",
"parity-ethereum 2.6.7",
"parity-ethereum 2.6.8",
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2673,7 +2673,7 @@ dependencies = [
[[package]]
name = "parity-ethereum"
version = "2.6.7"
version = "2.6.8"
dependencies = [
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2726,7 +2726,7 @@ dependencies = [
"parity-runtime 0.1.0",
"parity-updater 1.12.0",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-version 2.6.7",
"parity-version 2.6.8",
"parity-whisper 0.1.0",
"parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2869,7 +2869,7 @@ dependencies = [
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-runtime 0.1.0",
"parity-updater 1.12.0",
"parity-version 2.6.7",
"parity-version 2.6.8",
"parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2968,7 +2968,7 @@ dependencies = [
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-hash-fetch 1.12.0",
"parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-version 2.6.7",
"parity-version 2.6.8",
"parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2993,7 +2993,7 @@ dependencies = [
[[package]]
name = "parity-version"
version = "2.6.7"
version = "2.6.8"
dependencies = [
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",

View File

@@ -2,7 +2,7 @@
description = "Parity Ethereum client"
name = "parity-ethereum"
# NOTE Make sure to update util/version/Cargo.toml as well
version = "2.6.7"
version = "2.6.8"
license = "GPL-3.0"
authors = ["Parity Technologies <admin@parity.io>"]

View File

@@ -27,9 +27,12 @@ pub use self::headers::Headers;
/// Something which can produce a hash and a parent hash.
pub trait BlockLike {
/// Get the hash of this item.
/// Get the hash of this item - i.e. the header hash.
fn hash(&self) -> H256;
/// Get a raw hash of this item - i.e. the hash of the RLP representation.
fn raw_hash(&self) -> H256;
/// Get the hash of this item's parent.
fn parent_hash(&self) -> H256;
@@ -151,6 +154,10 @@ pub mod blocks {
self.header.hash()
}
fn raw_hash(&self) -> H256 {
keccak_hash::keccak(&self.bytes)
}
fn parent_hash(&self) -> H256 {
self.header.parent_hash().clone()
}
@@ -165,6 +172,10 @@ pub mod blocks {
self.header.hash()
}
fn raw_hash(&self) -> H256 {
keccak_hash::keccak(&self.bytes)
}
fn parent_hash(&self) -> H256 {
self.header.parent_hash().clone()
}
@@ -188,6 +199,7 @@ pub mod headers {
impl BlockLike for Header {
fn hash(&self) -> H256 { self.hash() }
fn raw_hash(&self) -> H256 { self.hash() }
fn parent_hash(&self) -> H256 { self.parent_hash().clone() }
fn difficulty(&self) -> U256 { self.difficulty().clone() }
}

View File

@@ -467,13 +467,14 @@ impl<K: Kind> VerificationQueue<K> {
/// Add a block to the queue.
pub fn import(&self, input: K::Input) -> Result<H256, (K::Input, Error)> {
let hash = input.hash();
let raw_hash = input.raw_hash();
{
if self.processing.read().contains_key(&hash) {
return Err((input, Error::Import(ImportError::AlreadyQueued).into()));
}
let mut bad = self.verification.bad.lock();
if bad.contains(&hash) {
if bad.contains(&hash) || bad.contains(&raw_hash) {
return Err((input, Error::Import(ImportError::KnownBad).into()));
}
@@ -500,6 +501,16 @@ impl<K: Kind> VerificationQueue<K> {
match err {
// Don't mark future blocks as bad.
Error::Block(BlockError::TemporarilyInvalid(_)) => {},
// If the transaction root or uncles hash is invalid, it doesn't necessarily mean
// that the header is invalid. We might have just received a malformed block body,
// so we shouldn't put the header hash to `bad`.
//
// We still put the entire `Item` hash to bad, so that we can early reject
// the items that are malformed.
Error::Block(BlockError::InvalidTransactionsRoot(_)) |
Error::Block(BlockError::InvalidUnclesHash(_)) => {
self.verification.bad.lock().insert(raw_hash);
},
_ => {
self.verification.bad.lock().insert(hash);
}

View File

@@ -3,7 +3,7 @@
[package]
name = "parity-version"
# NOTE: this value is used for Parity Ethereum version string (via env CARGO_PKG_VERSION)
version = "2.6.7"
version = "2.6.8"
authors = ["Parity Technologies <admin@parity.io>"]
build = "build.rs"