You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2010/03/11 15:43:40 UTC
svn commit: r921874 - in /spamassassin/branches/3.3:
lib/Mail/SpamAssassin.pm lib/Mail/SpamAssassin/BayesStore/DBM.pm
lib/Mail/SpamAssassin/Dns.pm lib/Mail/SpamAssassin/Util.pm spamd/spamd.raw
Author: mmartinec
Date: Thu Mar 11 14:43:39 2010
New Revision: 921874
URL: http://svn.apache.org/viewvc?rev=921874&view=rev
Log:
Bug 6373: avoid user checks for win32;
plus: import a sub am_running_on_windows() where it is
more heavily used, reducing the clutter in calls
Modified:
spamassassin/branches/3.3/lib/Mail/SpamAssassin.pm
spamassassin/branches/3.3/lib/Mail/SpamAssassin/BayesStore/DBM.pm
spamassassin/branches/3.3/lib/Mail/SpamAssassin/Dns.pm
spamassassin/branches/3.3/lib/Mail/SpamAssassin/Util.pm
spamassassin/branches/3.3/spamd/spamd.raw
Modified: spamassassin/branches/3.3/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.3/lib/Mail/SpamAssassin.pm?rev=921874&r1=921873&r2=921874&view=diff
==============================================================================
--- spamassassin/branches/3.3/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/branches/3.3/lib/Mail/SpamAssassin.pm Thu Mar 11 14:43:39 2010
@@ -75,7 +75,7 @@ use Mail::SpamAssassin::PerMsgStatus;
use Mail::SpamAssassin::Message;
use Mail::SpamAssassin::PluginHandler;
use Mail::SpamAssassin::DnsResolver;
-use Mail::SpamAssassin::Util qw(untaint_var);
+use Mail::SpamAssassin::Util qw(untaint_var am_running_on_windows);
use Mail::SpamAssassin::Util::ScopedTimer;
use Errno qw(ENOENT EACCES);
@@ -423,7 +423,7 @@ sub create_locker {
elsif ($m eq 'nfssafe') { $class = 'UnixNFSSafe'; }
else {
# OS-specific defaults
- if (Mail::SpamAssassin::Util::am_running_on_windows()) {
+ if (am_running_on_windows()) {
$class = 'Win32';
} else {
$class = 'UnixNFSSafe';
@@ -1955,7 +1955,7 @@ sub expand_name ($) {
my ($self, $name) = @_;
my $home = $self->{user_dir} || $ENV{HOME} || '';
- if (Mail::SpamAssassin::Util::am_running_on_windows()) {
+ if (am_running_on_windows()) {
my $userprofile = $ENV{USERPROFILE} || '';
return $userprofile if ($userprofile && $userprofile =~ m/^[a-z]\:[\/\\]/oi);
Modified: spamassassin/branches/3.3/lib/Mail/SpamAssassin/BayesStore/DBM.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.3/lib/Mail/SpamAssassin/BayesStore/DBM.pm?rev=921874&r1=921873&r2=921874&view=diff
==============================================================================
--- spamassassin/branches/3.3/lib/Mail/SpamAssassin/BayesStore/DBM.pm (original)
+++ spamassassin/branches/3.3/lib/Mail/SpamAssassin/BayesStore/DBM.pm Thu Mar 11 14:43:39 2010
@@ -34,7 +34,7 @@ BEGIN {
}
use Mail::SpamAssassin;
-use Mail::SpamAssassin::Util qw(untaint_var);
+use Mail::SpamAssassin::Util qw(untaint_var am_running_on_windows);
use Mail::SpamAssassin::BayesStore;
use Mail::SpamAssassin::Logger;
@@ -458,7 +458,7 @@ sub _upgrade_db {
# it to be interrupted.
local $SIG{'INT'} = 'IGNORE';
local $SIG{'TERM'} = 'IGNORE';
- local $SIG{'HUP'} = 'IGNORE' if (!Mail::SpamAssassin::Util::am_running_on_windows());
+ local $SIG{'HUP'} = 'IGNORE' if !am_running_on_windows();
# older versions used scancount, so kill the stupid little file ...
my $msgc = $path.'_msgcount';
@@ -553,7 +553,7 @@ sub _upgrade_db {
# it to be interrupted.
local $SIG{'INT'} = 'IGNORE';
local $SIG{'TERM'} = 'IGNORE';
- local $SIG{'HUP'} = 'IGNORE' if (!Mail::SpamAssassin::Util::am_running_on_windows());
+ local $SIG{'HUP'} = 'IGNORE' if !am_running_on_windows();
# now rename in the new one. Try several extensions
for my $ext ($self->DB_EXTENSIONS) {
@@ -766,7 +766,7 @@ sub token_expiration {
{
local $SIG{'INT'} = 'IGNORE';
local $SIG{'TERM'} = 'IGNORE';
- local $SIG{'HUP'} = 'IGNORE' if (!Mail::SpamAssassin::Util::am_running_on_windows());
+ local $SIG{'HUP'} = 'IGNORE' if !am_running_on_windows();
# now rename in the new one. Try several extensions
for my $ext ($self->DB_EXTENSIONS) {
@@ -1258,7 +1258,7 @@ sub _sync_journal_trapped {
{
local $SIG{'INT'} = 'IGNORE';
local $SIG{'TERM'} = 'IGNORE';
- local $SIG{'HUP'} = 'IGNORE' if (!Mail::SpamAssassin::Util::am_running_on_windows());
+ local $SIG{'HUP'} = 'IGNORE' if !am_running_on_windows();
# retire the journal, so we can update the db files from it in peace.
# TODO: use locking here
@@ -1828,7 +1828,7 @@ sub restore_database {
local $SIG{'INT'} = 'IGNORE';
local $SIG{'TERM'} = 'IGNORE';
- local $SIG{'HUP'} = 'IGNORE' if (!Mail::SpamAssassin::Util::am_running_on_windows());
+ local $SIG{'HUP'} = 'IGNORE' if !am_running_on_windows();
untie %new_toks;
untie %new_seen;
Modified: spamassassin/branches/3.3/lib/Mail/SpamAssassin/Dns.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.3/lib/Mail/SpamAssassin/Dns.pm?rev=921874&r1=921873&r2=921874&view=diff
==============================================================================
--- spamassassin/branches/3.3/lib/Mail/SpamAssassin/Dns.pm (original)
+++ spamassassin/branches/3.3/lib/Mail/SpamAssassin/Dns.pm Thu Mar 11 14:43:39 2010
@@ -29,7 +29,7 @@ use Mail::SpamAssassin::Conf;
use Mail::SpamAssassin::PerMsgStatus;
use Mail::SpamAssassin::AsyncLoop;
use Mail::SpamAssassin::Constants qw(:ip);
-use Mail::SpamAssassin::Util qw(untaint_var);
+use Mail::SpamAssassin::Util qw(untaint_var am_running_on_windows);
use File::Spec;
use IO::Socket;
@@ -635,7 +635,7 @@ sub is_dns_available {
# Check version numbers - runtime check only
if (defined $Net::DNS::VERSION) {
- if (Mail::SpamAssassin::Util::am_running_on_windows()) {
+ if (am_running_on_windows()) {
if ($Net::DNS::VERSION < 0.46) {
warn("dns: Net::DNS version is $Net::DNS::VERSION, but need 0.46 for Win32");
return $IS_DNS_AVAILABLE;
Modified: spamassassin/branches/3.3/lib/Mail/SpamAssassin/Util.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.3/lib/Mail/SpamAssassin/Util.pm?rev=921874&r1=921873&r2=921874&view=diff
==============================================================================
--- spamassassin/branches/3.3/lib/Mail/SpamAssassin/Util.pm (original)
+++ spamassassin/branches/3.3/lib/Mail/SpamAssassin/Util.pm Thu Mar 11 14:43:39 2010
@@ -58,7 +58,7 @@ BEGIN {
@ISA = qw(Exporter);
@EXPORT = ();
@EXPORT_OK = qw(&local_tz &base64_decode &untaint_var &untaint_file_path
- &exit_status_str &proc_status_ok);
+ &exit_status_str &proc_status_ok &am_running_on_windows);
}
use Mail::SpamAssassin;
@@ -1555,7 +1555,7 @@ sub helper_app_pipe_open_unix {
sub trap_sigalrm_fully {
my ($handler) = @_;
- if ($] < 5.008 || Mail::SpamAssassin::Util::am_running_on_windows()) {
+ if ($] < 5.008 || am_running_on_windows()) {
# signals are always unsafe on perl older than 5.008, just use %SIG
# Bug 6359, no POSIX::SIGALRM on Windows, just use %SIG
$SIG{ALRM} = $handler;
Modified: spamassassin/branches/3.3/spamd/spamd.raw
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.3/spamd/spamd.raw?rev=921874&r1=921873&r2=921874&view=diff
==============================================================================
--- spamassassin/branches/3.3/spamd/spamd.raw (original)
+++ spamassassin/branches/3.3/spamd/spamd.raw Thu Mar 11 14:43:39 2010
@@ -89,7 +89,8 @@ use Mail::SpamAssassin::NetSet;
use Mail::SpamAssassin::SubProcBackChannel;
use Mail::SpamAssassin::SpamdForkScaling qw(:pfstates);
use Mail::SpamAssassin::Logger qw(:DEFAULT log_message);
-use Mail::SpamAssassin::Util qw(untaint_var exit_status_str);
+use Mail::SpamAssassin::Util qw(untaint_var exit_status_str
+ am_running_on_windows);
use Mail::SpamAssassin::Timeout;
use Getopt::Long;
@@ -445,8 +446,7 @@ my $log_facility = $opt{'syslog'} || 'ma
my $log_socket = lc($opt{'syslog-socket'});
if (!defined $log_socket || $log_socket eq '') {
- $log_socket =
- Mail::SpamAssassin::Util::am_running_on_windows() ? 'none' : 'unix';
+ $log_socket = am_running_on_windows() ? 'none' : 'unix';
}
# This is the default log file; it can be changed on the command line
@@ -1354,16 +1354,17 @@ sub handle_setuid_to_user {
if ($spamtest->{paranoid}) {
die("spamd: in paranoid mode, still running as root: closing connection");
}
- warn("spamd: still running as root: user not specified with -u, "
- . "not found, or set to root, falling back to nobody\n");
+ if (!am_running_on_windows()) {
+ warn("spamd: still running as root: user not specified with -u, "
+ . "not found, or set to root, falling back to nobody\n");
- my ($name, $pwd, $uid, $gid, $quota, $comment, $gcos, $dir, $etc) =
- getpwnam('nobody');
+ my ($name, $pwd, $uid, $gid, $quota, $comment, $gcos, $dir, $etc) =
+ getpwnam('nobody');
- $) = "$gid $gid"; # eGID
- $> = $uid; # eUID
- if (!defined($uid) || ($> != $uid and $> != ($uid - 2**32))) {
- die("spamd: setuid to nobody failed");
+ $) = "$gid $gid"; # eGID
+ $> = $uid; # eUID
+ if (!defined($uid) || ($> != $uid and $> != ($uid - 2**32))) {
+ die("spamd: setuid to nobody failed");
}
$spamtest->signal_user_changed(
@@ -1372,6 +1373,7 @@ sub handle_setuid_to_user {
user_dir => $dir
}
);
+ }
}
sub parse_body {
@@ -1500,7 +1502,9 @@ sub check {
}
return 0 unless do_user_handling();
- if ($> == 0) { die "spamd: still running as root! dying"; }
+ if ($> == 0 && !am_running_on_windows()) {
+ die "spamd: still running as root! dying";
+ }
my $resp = "EX_OK";
@@ -1696,7 +1700,9 @@ sub dotell {
my $compress_zlib = $hdrs->{compress_zlib};
return 0 unless do_user_handling();
- if ($> == 0) { die "spamd: still running as root! dying"; }
+ if ($> == 0 && !am_running_on_windows()) {
+ die "spamd: still running as root! dying";
+ }
if (!$opt{tell}) {
service_unavailable_error("TELL commands are not enabled, set the --allow-tell switch.");
@@ -2097,7 +2103,7 @@ sub handle_user_setuid_basic {
$suidto = $opt{'username'};
}
my ($name, $pwd, $uid, $gid, $quota, $comment, $gcos, $suiddir, $etc) =
- getpwnam($suidto);
+ am_running_on_windows() ? ('nobody') : getpwnam($suidto);
if (!defined $uid) {
my $errmsg = "spamd: handle_user unable to find user: '$suidto'\n";