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 2007/01/14 15:57:12 UTC
svn commit: r496086 - /spamassassin/trunk/spamd/spamd.raw
Author: jm
Date: Sun Jan 14 06:57:11 2007
New Revision: 496086
URL: http://svn.apache.org/viewvc?view=rev&rev=496086
Log:
bug 4999: ensure spamd --auth-ident requires ident match User header in all situations
Modified:
spamassassin/trunk/spamd/spamd.raw
Modified: spamassassin/trunk/spamd/spamd.raw
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamd/spamd.raw?view=diff&rev=496086&r1=496085&r2=496086
==============================================================================
--- spamassassin/trunk/spamd/spamd.raw (original)
+++ spamassassin/trunk/spamd/spamd.raw Sun Jan 14 06:57:11 2007
@@ -1775,6 +1775,8 @@
sub parse_headers {
my ($hdrs, $client) = @_;
+ my $got_user_header;
+
# max 255 headers
for my $hcount ( 0 .. 255 ) {
my $line = $client->getline;
@@ -1784,7 +1786,14 @@
return 0;
}
$line =~ s/\r\n$//;
- return 1 unless ($line);
+
+ if (!length $line) { # end of headers
+ if (!$got_user_header && $opt{'auth-ident'}) {
+ service_unavailable_error('User header required');
+ return 0;
+ }
+ return 1;
+ }
my ($header, $value) = split (/:\s*/, $line, 2);
unless (defined $value) {
@@ -1793,19 +1802,20 @@
}
if ($header eq 'Content-length') {
- return 0 unless &got_clen_header($hdrs, $header, $value);
+ return 0 unless got_clen_header($hdrs, $header, $value);
}
elsif ($header eq 'User') {
- return 0 unless &got_user_header($hdrs, $header, $value);
+ return 0 unless got_user_header($hdrs, $header, $value);
+ $got_user_header++;
}
elsif ($header eq 'Message-class') {
- return 0 unless &got_message_class_header($hdrs, $header, $value);
+ return 0 unless got_message_class_header($hdrs, $header, $value);
}
elsif ($header eq 'Set') {
- return 0 unless &got_set_header($hdrs, $header, $value);
+ return 0 unless got_set_header($hdrs, $header, $value);
}
elsif ($header eq 'Remove') {
- return 0 unless &got_remove_header($hdrs, $header, $value);
+ return 0 unless got_remove_header($hdrs, $header, $value);
}
elsif ($header eq 'Compress') {
return 0 unless &got_compress_header($hdrs, $header, $value);