diff --git a/Cargo.lock b/Cargo.lock index e6285fbb40..e7156ecd97 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -348,6 +348,7 @@ dependencies = [ "rand 0.7.3", "rand_core 0.5.1", "rayon", + "regex", "safe_arith", "serde", "serde_derive", diff --git a/beacon_node/beacon_chain/Cargo.toml b/beacon_node/beacon_chain/Cargo.toml index 04e22f4268..05ae819c49 100644 --- a/beacon_node/beacon_chain/Cargo.toml +++ b/beacon_node/beacon_chain/Cargo.toml @@ -58,3 +58,4 @@ environment = { path = "../../lighthouse/environment" } bus = "2.2.3" derivative = "2.1.1" itertools = "0.9.0" +regex = "1.3.9" diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index b6320ad529..1f8e8f33b6 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -31,6 +31,7 @@ use fork_choice::ForkChoice; use itertools::process_results; use operation_pool::{OperationPool, PersistedOperationPool}; use parking_lot::RwLock; +use regex::bytes::Regex; use slog::{crit, debug, error, info, trace, warn, Logger}; use slot_clock::SlotClock; use state_processing::{ @@ -1319,8 +1320,11 @@ impl BeaconChain { block: SignedBeaconBlock, ) -> Result, BlockError> { let slot = block.message.slot; - let graffiti_string = String::from_utf8(block.message.body.graffiti[..].to_vec()) - .unwrap_or_else(|_| format!("{:?}", &block.message.body.graffiti[..])); + #[allow(clippy::invalid_regex)] + let re = Regex::new("\\p{C}").expect("regex is valid"); + let graffiti_string = + String::from_utf8_lossy(&re.replace_all(&block.message.body.graffiti[..], &b""[..])) + .to_string(); match GossipVerifiedBlock::new(block, self) { Ok(verified) => {