View | Details | Raw Unified | Return to bug 86168
Collapse All | Expand All

(-)sh.common (-5 / +15 lines)
Lines 161-166 Link Here
161
161
162
#   establish a temporary file on request
162
#   establish a temporary file on request
163
if [ ".$gen_tmpfile" = .yes ]; then
163
if [ ".$gen_tmpfile" = .yes ]; then
164
    #   create (explicitly) secure temporary directory
164
    if [ ".$TMPDIR" != . ]; then
165
    if [ ".$TMPDIR" != . ]; then
165
        tmpdir="$TMPDIR"
166
        tmpdir="$TMPDIR"
166
    elif [ ".$TEMPDIR" != . ]; then
167
    elif [ ".$TEMPDIR" != . ]; then
Lines 168-177 Link Here
168
    else
169
    else
169
        tmpdir="/tmp"
170
        tmpdir="/tmp"
170
    fi
171
    fi
171
    tmpfile="$tmpdir/.shtool.$$"
172
    tmpdir="$tmpdir/.shtool.$$"
172
    rm -f $tmpfile >/dev/null 2>&1
173
    ( umask 077
173
    touch $tmpfile
174
      rm -rf "$tmpdir" >/dev/null 2>&1 || true
174
    chmod 600 $tmpfile
175
      mkdir  "$tmpdir" >/dev/null 2>&1
176
      if [ $? -ne 0 ]; then
177
          echo "$msgprefix:Error: failed to create temporary directory \`$tmpdir'" 1>&2
178
          exit 1
179
      fi
180
    )
181
182
    #   create (implicitly) secure temporary file
183
    tmpfile="$tmpdir/shtool.tmp"
184
    touch "$tmpfile"
175
fi
185
fi
176
186
177
#   utility function: map string to lower case
187
#   utility function: map string to lower case
Lines 188-194 Link Here
188
shtool_exit () {
198
shtool_exit () {
189
    rc="$1"
199
    rc="$1"
190
    if [ ".$gen_tmpfile" = .yes ]; then
200
    if [ ".$gen_tmpfile" = .yes ]; then
191
        rm -f $tmpfile >/dev/null 2>&1 || true
201
        rm -rf "$tmpdir" >/dev/null 2>&1 || true
192
    fi
202
    fi
193
    exit $rc
203
    exit $rc
194
}
204
}
(-)sh.arx (-11 / +11 lines)
Lines 34-40 Link Here
34
files="$*"
34
files="$*"
35
35
36
#   walk through the file list and expand archives members
36
#   walk through the file list and expand archives members
37
tmpdir=`echo $archive | sed -e 's;[^/]*$;.arx;'`
37
ar_tmpdir=`echo $archive | sed -e 's;[^/]*$;.arx;'`
38
nfiles=''
38
nfiles=''
39
if [ ".$files" != . ]; then
39
if [ ".$files" != . ]; then
40
    for file in $files; do
40
    for file in $files; do
Lines 44-56 Link Here
44
        fi
44
        fi
45
        case $file in
45
        case $file in
46
            *.a )
46
            *.a )
47
                if [ ! -d $tmpdir ]; then
47
                if [ ! -d $ar_tmpdir ]; then
48
                    if [ ".$opt_t" = .yes ]; then
48
                    if [ ".$opt_t" = .yes ]; then
49
                        echo "mkdir $tmpdir" 1>&2
49
                        echo "mkdir $ar_tmpdir" 1>&2
50
                    fi
50
                    fi
51
                    mkdir $tmpdir
51
                    mkdir $ar_tmpdir
52
                fi
52
                fi
53
                case $tmpdir in
53
                case $ar_tmpdir in
54
                     .arx )
54
                     .arx )
55
                         from="../$file"
55
                         from="../$file"
56
                         ;;
56
                         ;;
Lines 61-76 Link Here
61
                         ;;
61
                         ;;
62
                esac
62
                esac
63
                if [ ".$opt_t" = .yes ]; then
63
                if [ ".$opt_t" = .yes ]; then
64
                    echo "(cd $tmpdir && $ar_prg x $from)" 1>&2
64
                    echo "(cd $ar_tmpdir && $ar_prg x $from)" 1>&2
65
                fi
65
                fi
66
                (cd $tmpdir && eval $ar_prg x $from)
66
                (cd $ar_tmpdir && eval $ar_prg x $from)
67
                if [ $? -ne 0 ]; then
67
                if [ $? -ne 0 ]; then
68
                    echo "$msgprefix:Error: member extraction failed for archive: $file" 1>&2
68
                    echo "$msgprefix:Error: member extraction failed for archive: $file" 1>&2
69
                    shtool_exit 1
69
                    shtool_exit 1
70
                fi
70
                fi
71
                for member in - `eval $ar_prg t $file | sed -e '/_\.SYMDEF/d'`; do
71
                for member in - `eval $ar_prg t $file | sed -e '/_\.SYMDEF/d'`; do
72
                    [ ".$member" = .- ] && continue
72
                    [ ".$member" = .- ] && continue
73
                    nfiles="$nfiles $tmpdir/$member"
73
                    nfiles="$nfiles $ar_tmpdir/$member"
74
                done
74
                done
75
                ;;
75
                ;;
76
            * )
76
            * )
Lines 91-101 Link Here
91
fi
91
fi
92
92
93
#   cleanup and die gracefully
93
#   cleanup and die gracefully
94
if [ -d $tmpdir ]; then
94
if [ -d $ar_tmpdir ]; then
95
    if [ ".$opt_t" = .yes ]; then
95
    if [ ".$opt_t" = .yes ]; then
96
        echo "rm -rf $tmpdir" 1>&2
96
        echo "rm -rf $ar_tmpdir" 1>&2
97
    fi
97
    fi
98
    rm -rf $tmpdir
98
    rm -rf $ar_tmpdir
99
fi
99
fi
100
100
101
shtool_exit 0
101
shtool_exit 0

Return to bug 86168