Mailing List Archive

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";