[Bash-completion-commits] [bash-completion] 01/02: Protect various compgen invocations from -* leakage (Debian: #766163)

Ville Skyttä scop-guest at moszumanska.debian.org
Sat Nov 1 19:49:41 UTC 2014


This is an automated email from the git hooks/post-receive script.

scop-guest pushed a commit to branch master
in repository bash-completion.

commit 882649b7123855a0b87fcee7e4bc043ca2cca711
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Sat Nov 1 21:44:10 2014 +0200

    Protect various compgen invocations from -* leakage (Debian: #766163)
---
 bash_completion         | 6 +++---
 completions/getent      | 8 ++++----
 completions/mplayer     | 2 +-
 completions/ntpdate     | 2 +-
 completions/pkg_delete  | 2 +-
 completions/portupgrade | 2 +-
 completions/rcs         | 2 +-
 test/unit/_tilde.exp    | 6 ++++++
 8 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/bash_completion b/bash_completion
index 57423ab..24bd2ea 100644
--- a/bash_completion
+++ b/bash_completion
@@ -952,7 +952,7 @@ _tilde()
     local result=0
     if [[ $1 == \~* && $1 != */* ]]; then
         # Try generate ~username completions
-        COMPREPLY=( $( compgen -P '~' -u "${1#\~}" ) )
+        COMPREPLY=( $( compgen -P '~' -u -- "${1#\~}" ) )
         result=${#COMPREPLY[@]}
         # 2>/dev/null for direct invocation, e.g. in the _tilde unit test
         [[ $result -gt 0 ]] && compopt -o filenames 2>/dev/null
@@ -1019,7 +1019,7 @@ _expand()
         eval cur=$cur 2>/dev/null
     elif [[ "$cur" == \~* ]]; then
         cur=${cur#\~}
-        COMPREPLY=( $( compgen -P '~' -u "$cur" ) )
+        COMPREPLY=( $( compgen -P '~' -u -- "$cur" ) )
         [[ ${#COMPREPLY[@]} -eq 1 ]] && eval COMPREPLY[0]=${COMPREPLY[0]}
         return ${#COMPREPLY[@]}
     fi
@@ -1620,7 +1620,7 @@ _cd()
     for i in ${CDPATH//:/$'\n'}; do
         # create an array of matched subdirs
         k="${#COMPREPLY[@]}"
-        for j in $( compgen -d $i/$cur ); do
+        for j in $( compgen -d -- $i/$cur ); do
             if [[ ( $mark_symdirs && -h $j || $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then
                 j+="/"
             fi
diff --git a/completions/getent b/completions/getent
index 2e99f52..52f1ba4 100644
--- a/completions/getent
+++ b/completions/getent
@@ -26,19 +26,19 @@ _getent()
 
     case $db in
         passwd)
-            COMPREPLY=( $( compgen -u "$cur"  ) )
+            COMPREPLY=( $( compgen -u -- "$cur" ) )
             return 0
             ;;
         group)
-            COMPREPLY=( $( compgen -g "$cur"  ) )
+            COMPREPLY=( $( compgen -g -- "$cur" ) )
             return 0
             ;;
         services)
-            COMPREPLY=( $( compgen -s "$cur"  ) )
+            COMPREPLY=( $( compgen -s -- "$cur" ) )
             return 0
             ;;
         hosts)
-            COMPREPLY=( $( compgen -A hostname "$cur"  ) )
+            COMPREPLY=( $( compgen -A hostname -- "$cur" ) )
             return 0
             ;;
         protocols|networks|ahosts|ahostsv4|ahostsv6|rpc)
diff --git a/completions/mplayer b/completions/mplayer
index 2a65478..0237908 100644
--- a/completions/mplayer
+++ b/completions/mplayer
@@ -86,7 +86,7 @@ _mplayer()
             local IFS=$'\n'
             for i in ~/.mplayer/skins ${dirs[@]}; do
                 if [[ -d $i && -r $i ]]; then
-                    for j in $( compgen -d $i/$cur ); do
+                    for j in $( compgen -d -- $i/$cur ); do
                         COMPREPLY[$k]=${j#$i/}
                         k=$((++k))
                     done
diff --git a/completions/ntpdate b/completions/ntpdate
index dab3847..1f58950 100644
--- a/completions/ntpdate
+++ b/completions/ntpdate
@@ -11,7 +11,7 @@ _ntpdate()
             return 0
             ;;
         -U)
-            COMPREPLY=( $( compgen -u "$cur" ) )
+            COMPREPLY=( $( compgen -u -- "$cur" ) )
             return 0
             ;;
         -p)
diff --git a/completions/pkg_delete b/completions/pkg_delete
index 15770ac..b741597 100644
--- a/completions/pkg_delete
+++ b/completions/pkg_delete
@@ -11,7 +11,7 @@ _pkg_delete()
 
     [[ "$prev" == -o || "$prev" == -p || "$prev" == -W ]] && return 0
 
-    COMPREPLY=( $( compgen -d "$pkgdir$cur" ) )
+    COMPREPLY=( $( compgen -d -- "$pkgdir$cur" ) )
     COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )
 
     return 0
diff --git a/completions/portupgrade b/completions/portupgrade
index 96e4fb6..a2a0002 100644
--- a/completions/portupgrade
+++ b/completions/portupgrade
@@ -9,7 +9,7 @@ _portupgrade()
 
     local pkgdir=${PKG_DBDIR:-/var/db/pkg}/
 
-    COMPREPLY=( $( compgen -d "$pkgdir$cur" ) )
+    COMPREPLY=( $( compgen -d -- "$pkgdir$cur" ) )
     COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )
     COMPREPLY=( ${COMPREPLY[@]%-*} )
 
diff --git a/completions/rcs b/completions/rcs
index 67c1c9d..9446d95 100644
--- a/completions/rcs
+++ b/completions/rcs
@@ -13,7 +13,7 @@ _rcs()
     # deal with relative directory
     [[ $file == $dir ]] && dir=.
 
-    COMPREPLY=( $( compgen -f "$dir/RCS/$file" ) )
+    COMPREPLY=( $( compgen -f -- "$dir/RCS/$file" ) )
 
     for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
         file=${COMPREPLY[$i]##*/}
diff --git a/test/unit/_tilde.exp b/test/unit/_tilde.exp
index 2e22b84..19f4724 100644
--- a/test/unit/_tilde.exp
+++ b/test/unit/_tilde.exp
@@ -46,6 +46,12 @@ sync_after_int
 set test "~part should complete to ~full"
 set cmd [format {_tilde "~%s"; printf "%%s\n" "${COMPREPLY[@]}"} $part]
 assert_bash_list "~$full" $cmd $test
+sync_after_int
+
+
+# Debian #766163
+assert_no_complete "_tilde ~-o"
+sync_after_int
 
 
 teardown

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/bash-completion/bash-completion.git



More information about the Bash-completion-commits mailing list