]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 134575 - some scripts trying to make world writable directories
authorbbaetz%student.usyd.edu.au <>
Sun, 7 Apr 2002 10:56:45 +0000 (10:56 +0000)
committerbbaetz%student.usyd.edu.au <>
Sun, 7 Apr 2002 10:56:45 +0000 (10:56 +0000)
r=justdave, gerv

defparams.pl
globals.pl
importxml.pl
move.pl

index eddf50942457047393b32f06e31cedf946049b27..d88938f3c81881a99442fca6b02308188dd660d9 100644 (file)
@@ -64,8 +64,6 @@ sub WriteParams {
             delete $::param{$item};
         }
     }
-    mkdir("data", 0777);
-    chmod 0777, "data";
     my $tmpname = "data/params.$$";
     open(FID, ">$tmpname") || die "Can't create $tmpname";
     my $v = $::param{'version'};
@@ -76,7 +74,7 @@ sub WriteParams {
     print FID "1;\n";
     close FID;
     rename $tmpname, "data/params" || die "Can't rename $tmpname to data/params";
-    chmod 0666, "data/params";
+    ChmodDataFile('data/params', 0666);
 }
     
 
index cb3612671c5e63f7243133133f843e75d896c5bb..249945ad97a9a712908e61d8c18cbf6c21c8284f 100644 (file)
@@ -117,6 +117,18 @@ $::superusergroupset = "9223372036854775807";
 #}
 #$::SIG{__DIE__} = \&die_with_dignity;
 
+# Some files in the data directory must be world readable iff we don't have
+# a webserver group. Call this function to do this.
+sub ChmodDataFile($$) {
+    my ($file, $mask) = @_;
+    my $perm = 0770;
+    if ((stat('data'))[2] & 0002) {
+        $perm = 0777;
+    }
+    $perm = $perm & $mask;
+    chmod $perm,$file;
+}
+
 sub ConnectToDatabase {
     my ($useshadow) = (@_);
     if (!defined $::db) {
@@ -565,8 +577,6 @@ sub GenerateVersionTable {
 
     my @list = sort { uc($a) cmp uc($b)} keys(%::versions);
     @::legal_product = @list;
-    mkdir("data", 0777);
-    chmod 0777, "data";
     my $tmpname = "data/versioncache.$$";
     open(FID, ">$tmpname") || die "Can't create $tmpname";
 
@@ -636,7 +646,7 @@ sub GenerateVersionTable {
     print FID "1;\n";
     close FID;
     rename $tmpname, "data/versioncache" || die "Can't rename $tmpname to versioncache";
-    chmod 0666, "data/versioncache";
+    ChmodDataFile('data/versioncache', 0666);
 }
 
 
index f2ed77d5c2733ffcad4358670ec98095f166154e..964d29a6f04373de4030cc75fa060ced16a82915 100755 (executable)
@@ -135,11 +135,7 @@ sub Log {
 sub Lock {
     if ($::lockcount <= 0) {
         $::lockcount = 0;
-        if (!open(LOCKFID, ">>data/maillock")) {
-            mkdir "data", 0777;
-            chmod 0777, "data";
-            open(LOCKFID, ">>data/maillock") || die "Can't open lockfile.";
-        }
+        open(LOCKFID, ">>data/maillock") || die "Can't open data/maillock: $!";
         my $val = flock(LOCKFID,2);
         if (!$val) { # '2' is magic 'exclusive lock' const.
             print "Content-type: text/html\n\n";
diff --git a/move.pl b/move.pl
index f38644358341c555cfa38428c034e9e51bb5ed29..b20ee528ba72c5d67e3bec13ad12b8d5d0888b2a 100755 (executable)
--- a/move.pl
+++ b/move.pl
@@ -50,11 +50,7 @@ sub Log {
 sub Lock {
     if ($::lockcount <= 0) {
         $::lockcount = 0;
-        if (!open(LOCKFID, ">>data/maillock")) {
-            mkdir "data", 0777;
-            chmod 0777, "data";
-            open(LOCKFID, ">>data/maillock") || die "Can't open lockfile.";
-        }
+        open(LOCKFID, ">>data/maillock") || die "Can't open data/maillock: $!";
         my $val = flock(LOCKFID,2);
         if (!$val) { # '2' is magic 'exclusive lock' const.
             print "Content-type: text/html\n\n";