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