diff options
Diffstat (limited to 'talpid-core')
| -rw-r--r-- | talpid-core/Cargo.toml | 1 | ||||
| -rw-r--r-- | talpid-core/src/lib.rs | 1 | ||||
| -rw-r--r-- | talpid-core/src/process/openvpn.rs | 14 |
3 files changed, 5 insertions, 11 deletions
diff --git a/talpid-core/Cargo.toml b/talpid-core/Cargo.toml index a811c911a4..1c04bdacef 100644 --- a/talpid-core/Cargo.toml +++ b/talpid-core/Cargo.toml @@ -13,6 +13,7 @@ jsonrpc-macros = { git = "https://github.com/paritytech/jsonrpc", tag = "v7.1.1" lazy_static = "0.2" log = "0.3" uuid = { version = "0.5", features = ["v4"] } +shell-escape = "0.1" openvpn-plugin = { version = "0.3", features = ["serde"] } talpid-ipc = { path = "../talpid-ipc" } diff --git a/talpid-core/src/lib.rs b/talpid-core/src/lib.rs index da6c49c580..1af5587def 100644 --- a/talpid-core/src/lib.rs +++ b/talpid-core/src/lib.rs @@ -22,6 +22,7 @@ extern crate error_chain; extern crate jsonrpc_core; #[macro_use] extern crate jsonrpc_macros; +extern crate shell_escape; extern crate uuid; extern crate openvpn_plugin; diff --git a/talpid-core/src/process/openvpn.rs b/talpid-core/src/process/openvpn.rs index 0eb5ec953e..ec0487c4bd 100644 --- a/talpid-core/src/process/openvpn.rs +++ b/talpid-core/src/process/openvpn.rs @@ -4,6 +4,7 @@ use std::ffi::{OsStr, OsString}; use std::fmt; use std::path::{Path, PathBuf}; +use shell_escape; use talpid_types::net; static BASE_ARGUMENTS: &[&[&str]] = &[ @@ -189,24 +190,15 @@ impl fmt::Display for OpenVpnCommand { /// Format the program and arguments of an `OpenVpnCommand` for display. Any non-utf8 data /// is lossily converted using the utf8 replacement character. fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - shell_escape(fmt, &self.openvpn_bin.to_string_lossy())?; + fmt.write_str(&shell_escape::escape(self.openvpn_bin.to_string_lossy()))?; for arg in &self.get_arguments() { fmt.write_str(" ")?; - shell_escape(fmt, &arg.to_string_lossy())?; + fmt.write_str(&shell_escape::escape(arg.to_string_lossy()))?; } Ok(()) } } -fn shell_escape(fmt: &mut fmt::Formatter, arg: &str) -> fmt::Result { - let quote = if arg.contains(char::is_whitespace) { - "\"" - } else { - "" - }; - write!(fmt, "{}{}{}", quote, arg, quote) -} - #[cfg(test)] mod tests { |
