freebsd-ports/Tools/portbuild/scripts/buildscript
Satoshi Asami c867f8186d Change find command line to find potential security hazards (ports
that install setupd binaries etc.)

Submitted by:	kris
2000-08-29 08:22:39 +00:00

125 lines
3.5 KiB
Bash
Executable file

#!/bin/sh
# usage: $0 DIRNAME PHASE
# PHASE is 1 (checksum) or 2 (package)
dir=$1
phase=$2
if [ $phase = 1 ]; then
cd $dir || exit 1
echo "maintained by: $(make maintainer)"
echo "build started at $(date)"
cd /tmp/depends
if [ "$(echo $(/bin/ls | wc -c))" != 0 ]; then
echo "adding dependencies"
for i in *.tgz; do
echo "pkg_add -f $i"
if ! pkg_add -f $i; then
echo "error in dependency $i, exiting"
echo "1" > /tmp/status
exit 1
fi
done
fi
cd $dir || exit 1
echo "================================================================"
echo "====================<phase 1: make checksum>===================="
if make checksum; then
echo "0" > /tmp/status
else
echo "1" > /tmp/status
echo "================================================================"
echo -n "build ended at "
date
fi
else
echo "====================<phase 2: make package>====================="
xvfb=0
if which -s Xvfb; then
xvfb=1
pid=$(echo $$ % 32768 | bc)
X11BASE=$(which Xvfb | sed -e 's./bin/Xvfb..')
Xvfb :${pid} -fp ${X11BASE}/lib/X11/fonts/misc &
DISPLAY=:${pid}
export DISPLAY
fi
cd $dir || exit 1
if make package; then
echo "0" > /tmp/status
pkgname=$(make package-name)
prefix=$(make -V PREFIX)
mtreefile=$(make -V MTREE_FILE)
echo "================================================================"
echo "checking installed files"
find ${prefix} \( \( -perm -4000 -o -perm -2000 -a \! -type d \) -o \( -perm -0002 -o -perm -0020 \) \) -a \! -type l -ls | sort > /tmp/list1
echo "pkg_delete ${pkgname}"
pkg_delete ${pkgname}
find ${prefix} \( \( -perm -4000 -o -perm -2000 -a \! -type d \) -o \( -perm -0002 -o -perm -0020 \) \) -a \! -type l -ls | sort > /tmp/list2
if ! diff -qb /tmp/list1 /tmp/list2 2>/dev/null; then
echo "================================================================"
echo "found set[ug]id or world-writable files and directories"
diff -b /tmp/list2 /tmp/list1 | grep '^>'
fi
cd /var/db/pkg
if [ $(echo $(echo * | wc -c)) != 2 ]; then
echo "================================================================"
echo "deleting dependencies"
prevlist=""
count=1
while [ $(echo $(echo * | wc -c)) != 2 -a $(echo $(echo * | wc -c)) != $(echo $(echo $prevlist | wc -c)) ]; do
echo "== phase $count =="
prevlist="$(echo *)"
for i in *; do
echo "pkg_delete $i"
pkg_delete $i
done
count=$(($count + 1))
done
if [ $(echo $(echo * | wc -c)) != 2 ]; then
echo "leftover packages:" *
# for i in *; do
# echo "pkg_delete -f $i"
# pkg_delete -f $i
# done
fi
fi
cd /var/db/pkg
if [ "x${mtreefile}" != "x" ]; then
mtree -f ${mtreefile} -p ${prefix} > /tmp/list3
if [ -s /tmp/list3 ]; then
if [ "x${NOPLISTCHECK}" = "x" ]; then
echo "1" > /tmp/status
fi
echo "================================================================"
echo "list of extra files and directories in ${prefix}"
cat /tmp/list3
echo "list of all files and directories in ${prefix}"
cd ${prefix}
find . -exec echo -n 'path: ' \; -exec ls -1d \{} \; | sort
echo "ls -alR ${prefix}"
ls -alR ${prefix}
fi
fi
else
echo "1" > /tmp/status
fi
if [ ${xvfb} = 1 ]; then
kill $(jobid %1)
fi
echo "================================================================"
echo -n "build ended at "
date
fi
exit 0