| # Check for world-writable files |
| |
| world_writable_check() { |
| # Now we look for all world writable files. |
| local unsafe_files=$(find "${ED}" -type f -perm -2 | sed -e "s:^${ED}:/:") |
| local OLDIFS x prev_shopts=$- |
| |
| OLDIFS=$IFS |
| IFS=$'\n' |
| set -f |
| |
| if [[ -n ${unsafe_files} ]] ; then |
| eqawarn "QA Security Notice: world writable file(s):" |
| |
| eqatag -v world-writable $unsafe_files |
| |
| eqawarn "This may or may not be a security problem, most of the time it is one." |
| eqawarn "Please double check that $PF really needs a world writeable bit and file bugs accordingly." |
| eqawarn |
| fi |
| |
| local unsafe_files=$(find "${ED}" -type f '(' -perm -2002 -o -perm -4002 ')' | sed -e "s:^${ED}:/:") |
| if [[ -n ${unsafe_files} ]] ; then |
| eqawarn "QA Notice: Unsafe files detected (set*id and world writable)" |
| |
| eqatag -v world-writable-setid $unsafe_files |
| |
| die "Unsafe files found in \${D}. Portage will not install them." |
| fi |
| |
| IFS=$OLDIFS |
| [[ ${prev_shopts} == *f* ]] || set +f |
| } |
| |
| world_writable_check |
| : # guarantee successful exit |
| |
| # vim:ft=sh |