emerge-webrsync: check permission, bug #142202
authorZac Medico <zmedico@gentoo.org>
Wed, 15 Aug 2012 02:00:35 +0000 (19:00 -0700)
committerZac Medico <zmedico@gentoo.org>
Wed, 15 Aug 2012 02:00:35 +0000 (19:00 -0700)
bin/emerge-webrsync

index 57e3052887741599b96ef4f8c4ecf3d79b6c6c52..0a036d29e3624fc1a710f8df004a15e70579e994 100755 (executable)
@@ -22,9 +22,9 @@ vvecho() { [[ ${do_verbose} -eq 1 ]] && echo "$@" ; }
 # Only echo if not in verbose mode
 nvecho() { [[ ${do_verbose} -eq 0 ]] && echo "$@" ; }
 # warning echos
-wecho() { echo "${argv0}: warning: $*" 1>&2 ; }
+wecho() { echo "${argv0##*/}: warning: $*" 1>&2 ; }
 # error echos
-eecho() { echo "${argv0}: error: $*" 1>&2 ; }
+eecho() { echo "${argv0##*/}: error: $*" 1>&2 ; }
 
 argv0=$0
 
@@ -445,6 +445,12 @@ main() {
                esac
        done
 
+       [[ -d ${PORTDIR} ]] || mkdir -p "${PORTDIR}"
+       if [[ ! -w ${PORTDIR} ]] ; then
+               eecho "PORTDIR is not writable: ${PORTDIR}"
+               exit 1
+       fi
+
        TMPDIR=${PORTAGE_TMPDIR}/emerge-webrsync
        ${keep} || DISTDIR=${TMPDIR}
 
@@ -452,6 +458,16 @@ main() {
        [ ! -d "${DISTDIR}" ] && mkdir -p "${DISTDIR}"
        cd "${TMPDIR}" || exit 1
 
+       if ${keep} && [[ ! -w ${DISTDIR} ]] ; then
+               eecho "DISTDIR is not writable: ${DISTDIR}"
+               exit 1
+       fi
+
+       if [[ ! -w ${TMPDIR} ]] ; then
+               eecho "TMPDIR is not writable: ${TMPDIR}"
+               exit 1
+       fi
+
        # This is a sanity check to help prevent people like funtoo users
        # from accidentally wiping out their git tree.
        if [[ -n $SYNC && ${SYNC#rsync:} = $SYNC ]] ; then