X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dsa-metapackages.git;a=blobdiff_plain;f=apt-in-chroot;h=7126202770fc3cda2771196e4708aa57a31cb4c6;hp=cdf8395cf7d6afd400d427d6430d9bf0711c1362;hb=57ffd58182ef0795c01d01649f355370d76fcdf7;hpb=026679061cd46b4107bced26734f569b2d448e10 diff --git a/apt-in-chroot b/apt-in-chroot index cdf8395..7126202 100755 --- a/apt-in-chroot +++ b/apt-in-chroot @@ -20,7 +20,7 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # -PATH="/usr/bin:/bin" +PATH="/usr/sbin:/usr/bin:/sbin:/bin" export PATH usage() { @@ -35,6 +35,7 @@ usage() { echo " + update" echo " + upgrade" echo " + dist-upgrade" + echo " + clean" } @@ -55,12 +56,14 @@ if [ -x /usr/bin/dchroot ] ; then chroots=$(dchroot -l 2>&1 | awk -F": " '{print $2}' | tr ' ' '\n') method=dchroot suffix[${#suffix[*]}]="_$(dpkg --print-architecture)" + allowed_filter='.' elif [ -x /usr/bin/schroot ] ; then chroots=$(schroot -l | awk -F":" '{print $2}' | grep -- '-dchroot$' ) method=schroot suffix[${#suffix[*]}]="" suffix[${#suffix[*]}]="-dchroot" suffix[${#suffix[*]}]="-$(dpkg --print-architecture)-dchroot" + allowed_filter='-dchroot$' else echo >&2 "Cannot find chroot wrapper." exit 1 @@ -79,10 +82,14 @@ if ! [ -n "$requested_chroot" ]; then echo >&2 "$CHROOT is not a valid dchroot. Available chroots are:" echo "$chroots" exit 1 +elif ! [[ "$requested_chroot" =~ $allowed_filter ]]; then # do not quote the regex + echo >&2 "$CHROOT is not a valid dchroot. While it exists, this script may not touch it. Chroot names must match $allowed_filter." + exit 1 fi + case "$APTCMD" in -install|remove|purge|build-dep|update|upgrade|dist-upgrade) +install|remove|purge|build-dep|update|upgrade|dist-upgrade|clean) # those are the allowed apt sub-commands ;; *)