/bin/bzexe is in bzip2 1.0.6-7+b3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | #!/bin/sh
# gzexe: compressor for Unix executables.
# Use this only for binaries that you do not use frequently.
#
# The compressed version is a shell script which decompresses itself after
# skipping $skip lines of shell commands. We try invoking the compressed
# executable with the original name (for programs looking at their name).
# We also try to retain the original file permissions on the compressed file.
# For safety reasons, gzexe will not create setuid or setgid shell scripts.
# WARNING: the first line of this file must be either : or #!/bin/sh
# The : is required for some old versions of csh.
# On Ultrix, /bin/sh is too buggy, change the first line to: #!/bin/sh5
# Copyright (C) 1998, 2002 Free Software Foundation
# Copyright (C) 1993 Jean-loup Gailly
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
PATH="/usr/bin:$PATH"
x=`basename $0`
if test $# = 0; then
echo compress executables. original file foo is renamed to foo~
echo usage: ${x} [-d] files...
echo " -d decompress the executables"
exit 1
fi
set -C
tmp=gz$$
trap "rm -f $tmp; exit 1" HUP INT QUIT TRAP USR1 PIPE TERM
: > $tmp || exit 1
decomp=0
res=0
test "$x" = "ungzexe" && decomp=1
if test "x$1" = "x-d"; then
decomp=1
shift
fi
echo hi > zfoo1$$ || exit 1
echo hi > zfoo2$$ || exit 1
if test -z "`(${CPMOD-cpmod} zfoo1$$ zfoo2$$) 2>&1`"; then
cpmod=${CPMOD-cpmod}
fi
rm -f zfoo[12]$$
tail=""
IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
if test -f $dir/tail; then
tail="$dir/tail"
break
fi
done
IFS="$saveifs"
if test -z "$tail"; then
echo cannot find tail
exit 1
fi
case `echo foo | $tail -n +1 2>/dev/null` in
foo) tail="$tail -n";;
esac
for i do
if test ! -f "$i" ; then
echo ${x}: $i not a file
res=1
continue
fi
if test $decomp -eq 0; then
if sed -e 1d -e 2q "$i" | grep "^skip=[0-9]*$" >/dev/null; then
echo "${x}: $i is already gzexe'd"
continue
fi
fi
if ls -l "$i" | grep '^...[sS]' > /dev/null; then
echo "${x}: $i has setuid permission, unchanged"
continue
fi
if ls -l "$i" | grep '^......[sS]' > /dev/null; then
echo "${x}: $i has setgid permission, unchanged"
continue
fi
case "`basename $i`" in
bzip2 | tail | sed | chmod | ln | sleep | rm)
echo "${x}: $i would depend on itself"; continue ;;
esac
if test -z "$cpmod"; then
cp -p "$i" $tmp 2>/dev/null || cp "$i" $tmp
if test -w $tmp 2>/dev/null; then
writable=1
else
writable=0
chmod u+w $tmp 2>/dev/null
fi
: >| $tmp # truncate the file, ignoring set -C
fi
if test $decomp -eq 0; then
sed 1q $0 >> $tmp
sed "s|^if tail|if $tail|" >> $tmp <<'EOF'
skip=23
set -C
umask=`umask`
umask 77
tmpfile=`tempfile -p gztmp -d /tmp` || exit 1
if tail +$skip "$0" | /bin/bzip2 -cd >> $tmpfile; then
umask $umask
/bin/chmod 700 $tmpfile
prog="`echo $0 | /bin/sed 's|^.*/||'`"
if /bin/ln -T $tmpfile "/tmp/$prog" 2>/dev/null; then
trap '/bin/rm -f $tmpfile "/tmp/$prog"; exit $res' 0
(/bin/sleep 5; /bin/rm -f $tmpfile "/tmp/$prog") 2>/dev/null &
/tmp/"$prog" ${1+"$@"}; res=$?
else
trap '/bin/rm -f $tmpfile; exit $res' 0
(/bin/sleep 5; /bin/rm -f $tmpfile) 2>/dev/null &
$tmpfile ${1+"$@"}; res=$?
fi
else
echo Cannot decompress $0; exit 1
fi; exit $res
EOF
bzip2 -cv9 "$i" >> $tmp || {
/bin/rm -f $tmp
echo ${x}: compression not possible for $i, file unchanged.
res=1
continue
}
else
# decompression
skip=23
if sed -e 1d -e 2q "$i" | grep "^skip=[0-9]*$" >/dev/null; then
eval `sed -e 1d -e 2q "$i"`
fi
if tail +$skip "$i" | bzip2 -cd > $tmp; then
:
else
echo ${x}: $i probably not in gzexe format, file unchanged.
res=1
continue
fi
fi
rm -f "$i~"
mv "$i" "$i~" || {
echo ${x}: cannot backup $i as $i~
rm -f $tmp
res=1
continue
}
mv $tmp "$i" || cp -p $tmp "$i" 2>/dev/null || cp $tmp "$i" || {
echo ${x}: cannot create $i
rm -f $tmp
res=1
continue
}
rm -f $tmp
if test -n "$cpmod"; then
$cpmod "$i~" "$i" 2>/dev/null
elif test $writable -eq 0; then
chmod u-w $i 2>/dev/null
fi
done
exit $res
|