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 2009/09/20 19:57:50 UTC
svn commit: r817067 - in /spamassassin/trunk: MANIFEST
lib/Mail/SpamAssassin/DBBasedAddrList.pm
lib/Mail/SpamAssassin/Locker/Flock.pm
lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm
lib/Mail/SpamAssassin/Plugin/AWL.pm t/db_awl_perms.t
Author: jm
Date: Sun Sep 20 17:57:49 2009
New Revision: 817067
URL: http://svn.apache.org/viewvc?rev=817067&view=rev
Log:
bug 6173: fix incorrect mode bits when creating lock files for AWL
Added:
spamassassin/trunk/t/db_awl_perms.t (with props)
Modified:
spamassassin/trunk/MANIFEST
spamassassin/trunk/lib/Mail/SpamAssassin/DBBasedAddrList.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Locker/Flock.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm
Modified: spamassassin/trunk/MANIFEST
URL: http://svn.apache.org/viewvc/spamassassin/trunk/MANIFEST?rev=817067&r1=817066&r2=817067&view=diff
==============================================================================
--- spamassassin/trunk/MANIFEST (original)
+++ spamassassin/trunk/MANIFEST Sun Sep 20 17:57:49 2009
@@ -515,3 +515,4 @@
t/whitelist_to.t
t/zz_cleanup.t
t/spamd_whitelist_leak.t
+t/db_awl_perms.t
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/DBBasedAddrList.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/DBBasedAddrList.pm?rev=817067&r1=817066&r2=817067&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/DBBasedAddrList.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/DBBasedAddrList.pm Sun Sep 20 17:57:49 2009
@@ -60,13 +60,15 @@
$main->{conf}->{auto_whitelist_db_modules}."\n";
}
+ my $umask = umask ~ (oct($main->{conf}->{auto_whitelist_file_mode}));
+
# if undef then don't worry -- empty hash!
if (defined($main->{conf}->{auto_whitelist_path})) {
my $path = $main->sed_path($main->{conf}->{auto_whitelist_path});
my ($mod1, $mod2);
if ($main->{locker}->safe_lock
- ($path, 30, $main->{conf}->{auto_whitelist_file_mode}))
+ ($path, 30, $main->{conf}->{auto_whitelist_file_mode}))
{
$self->{locked_file} = $path;
$self->{is_locked} = 1;
@@ -80,10 +82,10 @@
dbg("auto-whitelist: tie-ing to DB file of type $dbm_module $mod1 in $path");
($self->{is_locked} && $dbm_module eq 'DB_File') and
- Mail::SpamAssassin::Util::avoid_db_file_locking_bug ($path);
+ Mail::SpamAssassin::Util::avoid_db_file_locking_bug($path);
if (! tie %{ $self->{accum} }, $dbm_module, $path, $mod2,
- oct($main->{conf}->{auto_whitelist_file_mode}) )
+ oct($main->{conf}->{auto_whitelist_file_mode}) & 0666)
{
my $err = $!; # might get overwritten later
if ($self->{is_locked}) {
@@ -93,6 +95,7 @@
die "auto-whitelist: cannot open auto_whitelist_path $path: $err\n";
}
}
+ umask $umask;
bless ($self, $class);
return $self;
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Locker/Flock.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Locker/Flock.pm?rev=817067&r1=817066&r2=817067&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Locker/Flock.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Locker/Flock.pm Sun Sep 20 17:57:49 2009
@@ -53,8 +53,9 @@
my @stat;
$max_retries ||= 30;
- $mode ||= 0600;
- $mode = oct $mode;
+ $mode ||= "0700";
+ $mode = (oct $mode) & 0666;
+ dbg ("locker: mode is $mode");
my $lock_file = "$path.mutex";
my $umask = umask(~$mode);
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm?rev=817067&r1=817066&r2=817067&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm Sun Sep 20 17:57:49 2009
@@ -62,8 +62,9 @@
my @stat;
$max_retries ||= 30;
- $mode ||= 0600;
- $mode = oct $mode if $mode =~ /^0/; # accept number or string
+ $mode ||= "0700";
+ $mode = (oct $mode) & 0666;
+ dbg ("locker: mode is $mode");
my $lock_file = "$path.lock";
my $hname = Mail::SpamAssassin::Util::fq_hostname();
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm?rev=817067&r1=817066&r2=817067&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm Sun Sep 20 17:57:49 2009
@@ -253,7 +253,7 @@
type => $Mail::SpamAssassin::Conf::CONF_TYPE_STRING
});
-=item auto_whitelist_file_mode (default: 0600)
+=item auto_whitelist_file_mode (default: 0700)
The file mode bits used for the automatic-whitelist directory or file.
@@ -266,7 +266,7 @@
push (@cmds, {
setting => 'auto_whitelist_file_mode',
is_admin => 1,
- default => '0600',
+ default => '0700',
type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC
});
Added: spamassassin/trunk/t/db_awl_perms.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/db_awl_perms.t?rev=817067&view=auto
==============================================================================
--- spamassassin/trunk/t/db_awl_perms.t (added)
+++ spamassassin/trunk/t/db_awl_perms.t Sun Sep 20 17:57:49 2009
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+
+use lib '.'; use lib 't';
+use SATest; sa_t_init("db_awl_perms");
+use Test; BEGIN { plan tests => 4 };
+use IO::File;
+
+# ---------------------------------------------------------------------------
+# bug 6173
+
+tstprefs ("
+ $default_cf_lines
+ use_auto_whitelist 1
+ auto_whitelist_path ./log/user_state/awl
+ auto_whitelist_file_mode 0755
+ lock_method flock
+");
+
+unlink "log/user_state/awl";
+unlink "log/user_state/awl.mutex";
+umask 022;
+sarun("--debug --add-addr-to-whitelist whitelist_test\@example.org",
+ \&patterns_run_cb);
+
+system "ls -l log/user_state"; # for the logs
+
+my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size) = stat "log/user_state/awl";
+ok (($mode & 0777) == 0644);
+
+($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size) = stat "log/user_state/awl.mutex";
+ok (($mode & 0777) == 0644);
+
+ok unlink 'log/user_state/awl';
+ok unlink 'log/user_state/awl.mutex';
Propchange: spamassassin/trunk/t/db_awl_perms.t
------------------------------------------------------------------------------
svn:executable = *