From 5986155c8a1ccaf7daa1539024af7d65d25de8b3 Mon Sep 17 00:00:00 2001 From: Stefano Garzarella Date: Mon, 26 Sep 2022 19:14:16 +0200 Subject: [PATCH] vsock: don't panic if "connect PORT\n" is malformed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of panic if the local peer doesn't send "connect PORT\n" correctly, let's print an error, ignoring the command. Print an error message also when allocating local port fails. Reported-by: Alex Bennée Signed-off-by: Stefano Garzarella --- vsock/src/vhu_vsock_thread.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/vsock/src/vhu_vsock_thread.rs b/vsock/src/vhu_vsock_thread.rs index 098075e..7de1d10 100644 --- a/vsock/src/vhu_vsock_thread.rs +++ b/vsock/src/vhu_vsock_thread.rs @@ -208,12 +208,19 @@ impl VhostUserVsockThread { let mut unix_stream = self.thread_backend.stream_map.remove(&fd).unwrap(); // Local peer is sending a "connect PORT\n" command - let peer_port = Self::read_local_stream_port(&mut unix_stream).unwrap(); + let peer_port = match Self::read_local_stream_port(&mut unix_stream) { + Ok(port) => port, + Err(err) => { + warn!("Error while parsing \"connect PORT\n\" command: {:?}", err); + return; + } + }; // Allocate a local port number let local_port = match self.allocate_local_port() { Ok(lp) => lp, - Err(_) => { + Err(err) => { + warn!("Error while allocating local port: {:?}", err); return; } };