[Mimedefang] Please try attached patch

David F. Skoll dfs at roaringpenguin.com
Wed Apr 24 18:45:34 EDT 2002


Hi,

Please try the patch below against a pristine MIME-tools 5.411a.  It should
take care of even weird things like name=@ 21.pif

Regards,

David.

diff -u -r MIME-tools-5.411-ORIG/lib/MIME/Field/ParamVal.pm MIME-tools-5.411/lib/MIME/Field/ParamVal.pm
--- MIME-tools-5.411-ORIG/lib/MIME/Field/ParamVal.pm	Sat Nov  4 14:54:49 2000
+++ MIME-tools-5.411/lib/MIME/Field/ParamVal.pm	Wed Apr 24 18:41:35 2002
@@ -108,6 +108,9 @@
 # Pattern to match spaces or comments:
 my $SPCZ     = '(?:\s|\([^\)]*\))*';

+# Pattern to match non-semicolon as fallback for broken MIME
+# produced by some viruses
+my $BADTOKEN = '[^;]+';

 #------------------------------
 #
@@ -200,9 +203,16 @@
 	$raw =~ m/\G$SPCZ\;$SPCZ/og or last;             # skip leading separator
 	$raw =~ m/\G($PARAMNAME)\s*=\s*/og or last;      # give up if not a param
 	$param = lc($1);
-	$raw =~ m/\G(\"([^\"]+)\")|\G($TOKEN)|\G($ENCTOKEN)/g or last;   # give up if no value
-	my ($qstr, $str, $token, $enctoken) = ($1, $2, $3, $4);
-	$params{$param} = defined($qstr) ? $str : (defined($token) ? $token : $enctoken);
+	$raw =~ m/\G(\"([^\"]+)\")|\G($ENCTOKEN)|\G($BADTOKEN)|\G($TOKEN)/g or last;   # give up if no value
+	my ($qstr, $str, $enctoken, $badtoken, $token) = ($1, $2, $3, $4, $5);
+	if (defined($badtoken)) {
+	    # Strip leading/trailing whitespace from badtoken
+	    $badtoken =~ s/^\s*//;
+	    $badtoken =~ s/\s*$//;
+	}
+	$params{$param} = defined($qstr) ? $str :
+	    (defined($enctoken) ? $enctoken :
+	     (defined($badtoken) ? $badtoken : $token));
 	debug "   field param <$param> = <$params{$param}>";
     }

Only in MIME-tools-5.411/lib/MIME/Field: ParamVal.pm~
diff -u -r MIME-tools-5.411-ORIG/lib/MIME/Parser.pm MIME-tools-5.411/lib/MIME/Parser.pm
--- MIME-tools-5.411-ORIG/lib/MIME/Parser.pm	Sun Nov 12 00:55:11 2000
+++ MIME-tools-5.411/lib/MIME/Parser.pm	Wed Apr 24 08:34:18 2002
@@ -998,6 +998,7 @@
 	$self->process_multipart($in, $rdr, $ent);
     }
     elsif (("$type/$subtype" eq "message/rfc822") &&
+	   ($head->count('MIME-Version') > 0 || $self->extract_nested_messages eq 'REPLACE') &&
 	   $self->extract_nested_messages) {
 	$self->debug("attempting to process a nested message");
 	$self->process_message($in, $rdr, $ent);




More information about the MIMEDefang mailing list