summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2016-10-17 15:07:50 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2016-10-26 13:41:00 +0200
commit108f04e71eeeb599073eb11ebbdf9b09dabeb6a3 (patch)
treef08b09856834ec663cb8c9f5afcefd5d3067894f
parent7034ea7aa33328a2ab937d3b1559dfcb59bc8130 (diff)
downloadNetworkManager-108f04e71eeeb599073eb11ebbdf9b09dabeb6a3.tar.gz
cli: completion: escape shell special characters "()&!"
https://bugzilla.gnome.org/show_bug.cgi?id=772629
-rw-r--r--clients/cli/nmcli-completion7
1 files changed, 6 insertions, 1 deletions
diff --git a/clients/cli/nmcli-completion b/clients/cli/nmcli-completion
index e78ab85c82..e1716f6024 100644
--- a/clients/cli/nmcli-completion
+++ b/clients/cli/nmcli-completion
@@ -25,10 +25,11 @@ _nmcli_list_nl()
# [']bla'bla"bla\bla bla --> [']bla'\''bla"bla\bla bla
COMPREPLY[$i]="${entry//\'/${escaped_single_quote}}"
elif [[ "${cur:0:1}" == '"' ]]; then
- # started with double quote, escaping all double quotes and all backslashes
+ # started with double quote, escaping all double quotes, backslashes and !
# ["]bla'bla"bla\bla bla --> ["]bla'bla\"bla\\bla bla
entry="${entry//\\/\\\\}"
entry="${entry//\"/\\\"}"
+ entry="${entry//!/\"\\!\"}"
COMPREPLY[$i]="$entry"
else
# no quotes in front, escaping _everything_
@@ -37,6 +38,10 @@ _nmcli_list_nl()
entry="${entry//\'/\'}"
entry="${entry//\"/\\\"}"
entry="${entry// /\\ }"
+ entry="${entry//\(/\\(}"
+ entry="${entry//)/\\)}"
+ entry="${entry//!/\\!}"
+ entry="${entry//&/\\&}"
COMPREPLY[$i]="$entry"
fi
(( i++ ))