author | Jan Noha <jan.noha@oracle.com> |
Thu, 24 Apr 2014 17:36:25 +0200 | |
branch | s11u2-sru |
changeset 3388 | 68cefdb716e2 |
parent 2799 | 1d47fff1ffff |
child 3811 | 6e696f960e14 |
permissions | -rw-r--r-- |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
1 |
From b3b5611e046b93fb20aa783d6d11d986f33f91f6 Mon Sep 17 00:00:00 2001 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
2 |
From: Paul Eggert <eggert <at> cs.ucla.edu> |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
3 |
Date: Thu, 3 Oct 2013 21:12:09 -0700 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
4 |
Subject: [PATCH] znew: avoid denial-of-service issue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
5 |
|
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
6 |
Reported by Rich Burridge in <http://bugs.gnu.org/15522>. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
7 |
* znew.in: Rewrite to avoid the need for a temporary file in /tmp. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
8 |
That way, we avoid the need for set -C |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
9 |
and worrying about denial of service. |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
10 |
Use touch -r and python rather than cpmod. |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
11 |
Assume cp -p works, as it's now universal. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
12 |
Quote 'echo' args better, while we're at it. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
13 |
(warn, tmp, cpmod, cpmodarg): Remove. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
14 |
(GZIP): Unset, so that we needn't test for gzip extension. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
15 |
(ext): Now always '.gz'. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
16 |
* znew.1: Document the change of implementation assumptions. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
17 |
--- |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
18 |
diff --git a/znew.1 b/znew.1 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
19 |
index dcdf84f..2a7e5e1 100644 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
20 |
--- a/znew.1 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
21 |
+++ b/znew.1 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
22 |
@@ -32,9 +32,16 @@ Keep a .Z file when it is smaller than the .gz file; implies |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
23 |
.SH "SEE ALSO" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
24 |
gzip(1), zmore(1), zdiff(1), zgrep(1), zforce(1), gzexe(1), compress(1) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
25 |
.SH BUGS |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
26 |
-.I Znew |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
27 |
-does not maintain the time stamp with the -P option if |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
28 |
-.I cpmod(1) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
29 |
-is not available and |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
30 |
-.I touch(1) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
31 |
-does not support the -r option. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
32 |
+If the |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
33 |
+.B \-P |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
34 |
+option is used, |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
35 |
+.I znew |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
36 |
+does not maintain the time stamp if |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
37 |
+.IR touch (1) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
38 |
+does not support the |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
39 |
+.B \-r |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
40 |
+option, and does not maintain permissions if |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
41 |
+.IR chmod (1) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
42 |
+does not support the |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
43 |
+.B \-\-reference |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
44 |
+option. |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
45 |
--- gzip-1.5/znew.in 2014-04-24 14:54:00.798820086 +0200 |
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
46 |
+++ gzip-1.5/znew.in 2014-04-24 14:53:49.388094138 +0200 |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
47 |
@@ -21,7 +21,7 @@ |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
48 |
case $1 in |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
49 |
--__bindir) bindir=${2?}; shift; shift;; |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
50 |
esac |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
51 |
-PATH=$bindir:$PATH; export PATH |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
52 |
+PATH=/usr/gnu/bin:$bindir:$PATH; export PATH |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
53 |
|
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
54 |
version="znew (gzip) @VERSION@ |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
55 |
Copyright (C) 2010-2012 Free Software Foundation, Inc. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
56 |
@@ -58,33 +58,9 @@ new=0 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
57 |
block=1024 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
58 |
# block is the disk block size (best guess, need not be exact) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
59 |
|
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
60 |
-warn="(does not preserve modes and timestamp)" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
61 |
-tmp=${TMPDIR-/tmp}/zfoo.$$ |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
62 |
-set -C |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
63 |
-echo hi > $tmp || exit |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
64 |
-if test -z "`(${CPMOD-cpmod} $tmp $tmp) 2>&1`"; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
65 |
- cpmod=${CPMOD-cpmod} |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
66 |
- warn="" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
67 |
-fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
68 |
- |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
69 |
-if test -z "$cpmod" && ${TOUCH-touch} -r $tmp $tmp 2>/dev/null; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
70 |
- cpmod="${TOUCH-touch}" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
71 |
- cpmodarg="-r" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
72 |
- warn="(does not preserve file modes)" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
73 |
-fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
74 |
- |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
75 |
-# check if GZIP env. variable uses -S or --suffix |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
76 |
-gzip -q $tmp |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
77 |
-ext=`echo $tmp* | sed "s|$tmp||"` |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
78 |
-rm -f $tmp* |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
79 |
-if test -z "$ext"; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
80 |
- echo znew: error determining gzip extension |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
81 |
- exit 1 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
82 |
-fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
83 |
-if test "$ext" = ".Z"; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
84 |
- echo znew: cannot use .Z as gzip extension. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
85 |
- exit 1 |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
86 |
-fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
87 |
+# Beware -s or --suffix in $GZIP. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
88 |
+unset GZIP |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
89 |
+ext=.gz |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
90 |
|
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
91 |
for arg |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
92 |
do |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
93 |
@@ -116,26 +92,32 @@ if test -n "$opt"; then |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
94 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
95 |
|
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
96 |
for i do |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
97 |
- n=`echo $i | sed 's/.Z$//'` |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
98 |
+ n=`echo "$i" | sed 's/.Z$//'` |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
99 |
if test ! -f "$n.Z" ; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
100 |
- echo $n.Z not found |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
101 |
+ echo "$n.Z not found" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
102 |
res=1; continue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
103 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
104 |
test $keep -eq 1 && old=`wc -c < "$n.Z"` |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
105 |
if test $pipe -eq 1; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
106 |
if gzip -d < "$n.Z" | gzip $opt > "$n$ext"; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
107 |
# Copy file attributes from old file to new one, if possible. |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
108 |
- test -n "$cpmod" && $cpmod $cpmodarg "$n.Z" "$n$ext" 2> /dev/null |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
109 |
+ touch -r"$n.Z" -- "$n$ext" 2>/dev/null |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
110 |
+ python -c ' |
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
111 |
+ import os |
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
112 |
+ import sys |
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
113 |
+ mode = os.stat(sys.argv[1]).st_mode & 07777 |
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
114 |
+ os.chmod(sys.argv[2], mode) |
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
115 |
+ ' "$n.Z" "$n$ext" |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
116 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
117 |
- echo error while recompressing $n.Z |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
118 |
+ echo "error while recompressing $n.Z" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
119 |
res=1; continue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
120 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
121 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
122 |
if test $check -eq 1; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
123 |
- if cp -p "$n.Z" "$n.$$" 2> /dev/null || cp "$n.Z" "$n.$$"; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
124 |
+ if cp -p "$n.Z" "$n.$$"; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
125 |
: |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
126 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
127 |
- echo cannot backup "$n.Z" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
128 |
+ echo "cannot backup $n.Z" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
129 |
res=1; continue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
130 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
131 |
fi |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
132 |
@@ -143,7 +125,7 @@ for i do |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
133 |
: |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
134 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
135 |
test $check -eq 1 && mv "$n.$$" "$n.Z" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
136 |
- echo error while uncompressing $n.Z |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
137 |
+ echo "error while uncompressing $n.Z" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
138 |
res=1; continue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
139 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
140 |
if gzip $opt "$n"; then |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
141 |
@@ -151,10 +133,10 @@ for i do |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
142 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
143 |
if test $check -eq 1; then |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
144 |
mv "$n.$$" "$n.Z" && rm -f "$n" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
145 |
- echo error while recompressing $n |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
146 |
+ echo "error while recompressing $n" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
147 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
148 |
# compress $n (might be dangerous if disk full) |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
149 |
- echo error while recompressing $n, left uncompressed |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
150 |
+ echo "error while recompressing $n, left uncompressed" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
151 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
152 |
res=1; continue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
153 |
fi |
3388
68cefdb716e2
18385582 compress/gzip package bringing in extra dependancies with fix for 15440739
Jan Noha <jan.noha@oracle.com>
parents:
2799
diff
changeset
|
154 |
@@ -175,7 +157,7 @@ for i do |
2799
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
155 |
else |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
156 |
test $pipe -eq 0 && mv "$n.$$" "$n.Z" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
157 |
rm -f "$n$ext" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
158 |
- echo error while testing $n$ext, $n.Z unchanged |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
159 |
+ echo "error while testing $n$ext, $n.Z unchanged" |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
160 |
res=1; continue |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
161 |
fi |
1d47fff1ffff
15440739 SUNBT6633578 gzcmp/gzdiff + gznew shell scripts use temporary files unsafely
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
162 |
elif test $pipe -eq 1; then |