From a7c3692364e47ec3d7fe89ed639a2f3d87fbdce1 Mon Sep 17 00:00:00 2001 From: aggstam Date: Thu, 15 Sep 2022 17:09:10 +0300 Subject: [PATCH] p2pnet: app_version check to verify version format --- src/net/protocol/protocol_version.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/net/protocol/protocol_version.rs b/src/net/protocol/protocol_version.rs index 3b3271a92..40bc51a8d 100644 --- a/src/net/protocol/protocol_version.rs +++ b/src/net/protocol/protocol_version.rs @@ -101,15 +101,21 @@ impl ProtocolVersion { // Version format: MAJOR.MINOR.PATCH let app_versions: Vec<&str> = app_version.split('.').collect(); let verack_msg_versions: Vec<&str> = verack_msg.app.split('.').collect(); + // Check for malformed versions + if app_versions.len() != 3 || verack_msg_versions.len() != 3 { + error!("ProtocolVersion::send_version() [Malformed version detected. Disconnecting from channel.]"); + self.hosts.remove(&self.channel.address()).await; + self.channel.stop().await; + return Err(Error::ChannelStopped) + } // Ignore PATCH version if app_versions[0] != verack_msg_versions[0] || app_versions[1] != verack_msg_versions[1] { error!( - "Wrong app version from [{}]. Disconnecting from channel.", + "ProtocolVersion::send_version() [Wrong app version from ({}). Disconnecting from channel.]", self.channel.address() ); - self.hosts.remove(&self.channel.address()).await; self.channel.stop().await; return Err(Error::ChannelStopped)