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=0fd9db87da2b9e94c421817e844ad121aa4d110f;hb=e3846346a6a32daa1705d72f6b838b954446a94b;hpb=67b22be13aa2a166f0dc982585b32097438298ac diff --git a/apt-in-chroot b/apt-in-chroot index 0fd9db8..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() { @@ -33,6 +33,9 @@ usage() { echo " + purge" echo " + build-dep" echo " + update" + echo " + upgrade" + echo " + dist-upgrade" + echo " + clean" } @@ -53,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="-dchroot" + suffix[${#suffix[*]}]="" suffix[${#suffix[*]}]="-dchroot" suffix[${#suffix[*]}]="-$(dpkg --print-architecture)-dchroot" + allowed_filter='-dchroot$' else echo >&2 "Cannot find chroot wrapper." exit 1 @@ -77,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) +install|remove|purge|build-dep|update|upgrade|dist-upgrade|clean) # those are the allowed apt sub-commands ;; *)