chiark / gitweb /
Add libsoap-lite-perl for the wiki
[dsa-metapackages.git] / apt-in-chroot
index cdf8395..7126202 100755 (executable)
@@ -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
        ;;
 *)