Mark: 2008/2/27, Mark Martinec <[EMAIL PROTECTED]>: > Sébastien, > > > > My gzip file has been sent personally to Mark Martinec because I had a > > problem with sending it to the mailing list. > > The log file I sent in my previous message was with disabling berkeleydb > > and applying patch. I hope it will able to help you. > > > Thanks. It took me a while to be able to reproduce the problem - it turned > out that it was already partially fixed in my current 2.6.0 code, but I could > devise some additional obscure cases which needed to be addresses as well). > > Here is a combined patch against a pristine 2.5.3 (the patch includes a > backport of sub parse_address, as mentioned previously in this thread). > > > --- amavisd.orig 2008-01-28 20:29:31.000000000 +0100 > +++ amavisd 2008-02-27 21:04:16.000000000 +0100 > @@ -3154,5 +3154,5 @@ > sub split_address($) { > my($mailbox) = @_; local($1,$2); > - $mailbox =~ /^ (.*?) ( \@ (?: \[ (?: \\. | [^\]\\] )* (?: \] | \z) > + $mailbox =~ /^ (.*?) ( \@ (?: \[ (?: \\. | [^\]\\] ){0,999} (?: \] | \z) > | [EMAIL PROTECTED] )* > ) \z/xs ? ($1, $2) : ($mailbox, ''); > @@ -3352,7 +3352,6 @@ > # the angle-bracket stripping is not really a duty of this subroutine, > # as it should have been already done elsewhere, but we allow it here > anyway: > - local($1,$2); > - $addr = $1 if $addr =~ /^ \s* < ( .* ) > \s* \z/xs; > - my($source_route,$localpart,$domain) = ('','',''); > + $addr =~ s/^\s*<//s; $addr =~ s/>\s*\z//s; # tolerate unmatched angle > brkts > + local($1,$2); my($source_route,$localpart,$domain) = ('','',''); > # RFC 2821: so-called "source route" MUST BE accepted, > # SHOULD NOT be generated, and SHOULD be ignored. > @@ -3362,7 +3361,7 @@ > if (index($addr,':') >= 0 && # triage before more testing for source route > $addr =~ m{^ ( [ \t]* \@ (?: [0-9A-Za-z.!#\$%&*/^{}=_+-]* | > - \[ (?: \\. | [^\]\\] )* \] ) [ \t]* > + \[ (?: \\. | [^\]\\] ){0,999} \] ) [ \t]* > (?: , [ \t]* \@ (?: [0-9A-Za-z.!#\$%&*/^{}=_+-]* | > - \[ (?: \\. | [^\]\\] )* \] ) [ > \t]* )* > + \[ (?: \\. | [^\]\\] ){0,999} \] ) [ > \t]* )* > : [ \t]* ) (.*) \z }xs) > { # NOTE: we are quite liberal on allowing whitespace around , and : here, > @@ -3371,7 +3370,8 @@ > $source_route = $1; $addr = $2; > } > - if ($addr =~ m{^ ( (?: [^"@]+ | " (?: \\. | [^"\\] )* " | . )*? ) > - ( \@ (?: [^"@\[\]\\ \t]+ | \[ (?: \\. | [^\]\\] )* \] > - | [EMAIL PROTECTED] )* )? \z}xs) { > + if ($addr =~ m{^ ( .*? ) > + ( \@ (?: [EMAIL PROTECTED] | \[ (?: \\. | [^\]\\] ){0,999} > \] > + | [EMAIL PROTECTED] )* ) > + \z}xs) { > ($localpart,$domain) = ($1,$2); > } else { > @@ -3425,19 +3425,26 @@ > if ($comm_lvl > 0 && /\G( \) )/gcsx) { $comm_lvl--; next } > if (!$in_qcontent && !$in_literal && /\G( \( )/gcsx) { $comm_lvl++; next > } > - if ($comm_lvl > 0 && /\G( (?: \\. | [^()\\] )+ )/gcsx) { next } > + if ($comm_lvl > 0 && /\G( \\. )/gcsx) { next } > + if ($comm_lvl > 0 && /\G( [^()\\]+ )/gcsx) { next } > # quoted content > - if ($in_qcontent && /\G( " )/gcsx) > + if ($in_qcontent && /\G( " )/gcsx) # normal exit from qcontent > { $in_qcontent = 0; ($in_angle?$p:$s) .= $1; next } > + if ($in_qcontent && /\G( > )/gcsx) # bail out of qcontent > + { $in_qcontent = 0; $in_angle = 0; $after_at = 0; > + ($in_angle?$p:$s) .= $1; next } > if (!$comm_lvl && !$in_qcontent && !$in_literal && /\G( " )/gcsx) > { $in_qcontent = 1; ($in_angle?$p:$s) .= $1; next } > - if ($in_qcontent && /\G( (?: \\. | [^"\\] )+ )/gcsx) > - { ($in_angle?$p:$s) .= $1; next } > + if ($in_qcontent && /\G( \\. )/gcsx) { ($in_angle?$p:$s) .= $1; > next } > + if ($in_qcontent && /\G( [^"\\>]+ )/gcsx) { ($in_angle?$p:$s) .= $1; > next } > # address literal > if ($in_literal && /\G( \] )/gcsx) > { $in_literal = 0; ($in_angle?$p:$s) .= $1; next } > + if ($in_literal && /\G( > )/gcsx) # bail out of address literal > + { $in_literal = 0; $in_angle = 0; $after_at = 0; > + ($in_angle?$p:$s) .= $1; next } > if (!$comm_lvl && !$in_qcontent && /\G( \[ )/gcsx) > { $in_literal = 1 if $after_at; ($in_angle?$p:$s) .= $1; next } > - if ($in_literal && /\G( (?: \\. | [^\]\\] )+ )/gcsx) > - { ($in_angle?$p:$s) .= $1; next } > + if ($in_literal && /\G( \\. )/gcsx) { ($in_angle?$p:$s) .= $1; > next } > + if ($in_literal && /\G( [^\]\\>]+ )/gcsx) { ($in_angle?$p:$s) .= $1; > next } > # normal content > if (!$comm_lvl && !$in_qcontent && !$in_literal) { > @@ -3456,7 +3463,7 @@ > if (!$in_group && /\G( ; )/gcsx) # out of place special > { ($in_angle?$p:$s) .= $1; $after_at = 0; next } > - if (/\G( \@ )/gcsx) { $after_at = 1; ($in_angle?$p:$s) .= $1; next } > - if (/\G( [ \t]+ )/gcsx) { ($in_angle?$p:$s) .= $1; next } > - if (/\G( [^,:;@<>()"\[\]\\]+ )/gcsx) { ($in_angle?$p:$s) .= $1; next } > + if (/\G( \@ )/gcsx) { $after_at = 1; ($in_angle?$p:$s) .= $1; next > } > + if (/\G( [ \t]+ )/gcsx) { ($in_angle?$p:$s) .= $1; next > } > + if (/\G( [^,:;\@<>()"\[\]\\]+ )/gcsx) { ($in_angle?$p:$s) .= $1; next > } > } > if (/\G( . )/gcsx) { ($in_angle?$p:$s) .= $1; next } # other junk > @@ -13765,6 +13772,6 @@ > local($1,$2); > if ($args !~ /^FROM: [ \t]* > - ( < (?: " (?: \\. | [^\\"] )* " | [^"@ \t] )* > - (?: @ (?: \[ (?: \\. | [^\]\\] )* \] | > + ( < (?: " (?: \\. | [^\\"] ){0,999} " | [^"@ \t] )* > + (?: @ (?: \[ (?: \\. | [^\]\\] ){0,999} \] | > [^\[\]\\> \t] )* )? > ) > (?: [ \t]+ (.+) )? \z/isx ) { > @@ -13859,6 +13866,6 @@ > local($1,$2); > if ($args !~ /^TO: [ \t]* > - ( < (?: " (?: \\. | [^\\"] )* " | [^"@ \t] )* > - (?: @ (?: \[ (?: \\. | [^\]\\] )* \] | > + ( < (?: " (?: \\. | [^\\"] ){0,999} " | [^"@ \t] )* > + (?: @ (?: \[ (?: \\. | [^\]\\] ){0,999} \] | > [^\[\]\\> \t] )* )? > ) > (?: [ \t]+ (.+) )? \z/isx ) { > > > > > > Mark > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > AMaViS-user mailing list > AMaViS-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amavis-user > AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3 > AMaViS-HowTos:http://www.amavis.org/howto/ >
I've tried to apply the patch to a just-downloaded amavisd-new-2.5.3.tar.gz, and here's the result: First, I saved you code to /usr/src/amavisd.patch I ran # cd /usr/src/amavisd-new-2.5.3 # patch -p1 < ../amavisd.patch And I got: missing header for unified diff at line 3 of patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- amavisd.orig 2008-01-28 20:29:31.000000000 +0100 |+++ amavisd 2008-02-27 21:04:16.000000000 +0100 -------------------------- File to patch: amavisd patching file amavisd Hunk #1 succeeded at 3154 with fuzz 2. Hunk #2 succeeded at 3352 with fuzz 2. Hunk #3 FAILED at 3361. Hunk #4 succeeded at 3370 with fuzz 2. Hunk #5 FAILED at 3425. Hunk #6 succeeded at 3463 with fuzz 2. Hunk #7 succeeded at 13772 with fuzz 2. Hunk #8 succeeded at 13866 with fuzz 2. 2 out of 8 hunks FAILED -- saving rejects to file amavisd.rej I'm no Linux genius, but I get off pretty well when it comes to patching code. What could I be doing wrong? Thanks in advance, Luis -- ------------------------------------------------- GNU-GPL: "May The Source Be With You... Linux Registered User #448382. When I grow up, I wanna be like Theo... ------------------------------------------------- ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ AMaViS-user mailing list AMaViS-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amavis-user AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3 AMaViS-HowTos:http://www.amavis.org/howto/