You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2005/08/05 02:12:06 UTC

svn commit: r227525 - in /spamassassin/branches/3.1/lib/Mail/SpamAssassin: BayesStore/DBM.pm DBBasedAddrList.pm Locker.pm Locker/Flock.pm Locker/UnixNFSSafe.pm Locker/Win32.pm

Author: jm
Date: Thu Aug  4 17:12:03 2005
New Revision: 227525

URL: http://svn.apache.org/viewcvs?rev=227525&view=rev
Log:
bug 4161: mutex lock files for the flock lock method need to respect bayes_file_mode file permissions, too

Modified:
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/BayesStore/DBM.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/DBBasedAddrList.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Flock.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm
    spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Win32.pm

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/BayesStore/DBM.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/BayesStore/DBM.pm?rev=227525&r1=227524&r2=227525&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/BayesStore/DBM.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/BayesStore/DBM.pm Thu Aug  4 17:12:03 2005
@@ -264,7 +264,8 @@
   } else {
     $tout = 10;
   }
-  if ($main->{locker}->safe_lock($path, $tout)) {
+  if ($main->{locker}->safe_lock($path, $tout, $main->{conf}->{bayes_file_mode}))
+  {
     $self->{locked_file} = $path;
     $self->{is_locked} = 1;
   } else {

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/DBBasedAddrList.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/DBBasedAddrList.pm?rev=227525&r1=227524&r2=227525&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/DBBasedAddrList.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/DBBasedAddrList.pm Thu Aug  4 17:12:03 2005
@@ -70,7 +70,7 @@
     $path = $main->sed_path ($main->{conf}->{auto_whitelist_path});
 
     if ($main->{locker}->safe_lock
-			($path, 30))
+			($path, 30, $main->{conf}->{auto_whitelist_file_mode}))
     {
       $self->{locked_file} = $path;
       $self->{is_locked} = 1;

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker.pm?rev=227525&r1=227524&r2=227525&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker.pm Thu Aug  4 17:12:03 2005
@@ -42,8 +42,10 @@
 ###########################################################################
 
 sub safe_lock {
-  my ($self, $path, $max_retries) = @_;
+  my ($self, $path, $max_retries, $mode) = @_;
   # max_retries is optional, should default to about 30
+  # mode is UNIX-style and optional, should default to 0700,
+  # callers must specify --x bits
   die "locker: safe_lock not implemented by Locker subclass";
 }
 

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Flock.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Flock.pm?rev=227525&r1=227524&r2=227525&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Flock.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Flock.pm Thu Aug  4 17:12:03 2005
@@ -46,14 +46,15 @@
 # Attempt to create a file lock, using NFS-UNsafe locking techniques.
 
 sub safe_lock {
-  my ($self, $path, $max_retries) = @_;
+  my ($self, $path, $max_retries, $mode) = @_;
   my $is_locked = 0;
   my @stat;
 
   $max_retries ||= 30;
+  $mode ||= 0700;
 
   my $lock_file = "$path.mutex";
-  my $umask = umask 077;
+  my $umask = umask (oct($mode) ^ 0700);
   my $fh = new IO::File();
 
   if (!$fh->open ("$lock_file", O_RDWR|O_CREAT)) {

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm?rev=227525&r1=227524&r2=227525&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm Thu Aug  4 17:12:03 2005
@@ -55,11 +55,12 @@
 use constant LOCK_MAX_AGE => 600;	# seconds 
 
 sub safe_lock {
-  my ($self, $path, $max_retries) = @_;
+  my ($self, $path, $max_retries, $mode) = @_;
   my $is_locked = 0;
   my @stat;
 
   $max_retries ||= 30;
+  $mode ||= 0700;
 
   my $lock_file = "$path.lock";
   my $hname = Mail::SpamAssassin::Util::fq_hostname();
@@ -69,7 +70,7 @@
   # keep this for unlocking
   $self->{lock_tmp} = $lock_tmp;
 
-  my $umask = umask 077;
+  my $umask = umask (oct($mode) ^ 0700);
   if (!open(LTMP, ">$lock_tmp")) {
       umask $umask; # just in case
       die "locker: safe_lock: cannot create tmp lockfile $lock_tmp for $lock_file: $!\n";

Modified: spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Win32.pm
URL: http://svn.apache.org/viewcvs/spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Win32.pm?rev=227525&r1=227524&r2=227525&view=diff
==============================================================================
--- spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Win32.pm (original)
+++ spamassassin/branches/3.1/lib/Mail/SpamAssassin/Locker/Win32.pm Thu Aug  4 17:12:03 2005
@@ -47,10 +47,11 @@
 use constant LOCK_MAX_AGE => 600;       # seconds 
 
 sub safe_lock {
-  my ($self, $path, $max_retries) = @_;
+  my ($self, $path, $max_retries, $mode) = @_;
   my @stat;
 
   $max_retries ||= 30;
+  # $mode is ignored on win32
 
   my $lock_file = "$path.lock";