diff options
author | Eric Wong <e@yhbt.net> | 2020-04-04 06:17:29 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-04-04 17:48:58 +0000 |
commit | f63bdad8579f96901e08d2e7d9cd46ea528ffcce (patch) | |
tree | 462323d278fd121f24880cd6e586e63ff54f93f1 /lib/PublicInbox | |
parent | 1a02e2d367b71eca9fc8093ce83fcae50873003d (diff) | |
download | public-inbox-f63bdad8579f96901e08d2e7d9cd46ea528ffcce.tar.gz |
We can't rely on Email::MIME noticing the change to our scalar ref after calling `PublicInbox::MIME->new'. This is because Email::MIME::body_set (unlike Email::Simple::body_set) will copy the contents of the body into `->{body_raw}' as a new scalar. Furthermore, we need to escape multiple From lines in the body, not just the first one, using the `g' modifier to `s//'. Reported-by: Kyle Meyer <kyle@kyleam.com>
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/InboxWritable.pm | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index ce979ea2..f2ba21fc 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -157,12 +157,12 @@ my $from_strict = qr/^From \S+ +\S+ \S+ +\S+ [^:]+:[^:]+:[^:]+ [^:]+/; sub mb_add ($$$$) { my ($im, $variant, $filter, $msg) = @_; $$msg =~ s/(\r?\n)+\z/$1/s; - my $mime = PublicInbox::MIME->new($msg); if ($variant eq 'mboxrd') { - $$msg =~ s/^>(>*From )/$1/sm; + $$msg =~ s/^>(>*From )/$1/gms; } elsif ($variant eq 'mboxo') { - $$msg =~ s/^>From /From /sm; + $$msg =~ s/^>From /From /gms; } + my $mime = PublicInbox::MIME->new($msg); if ($filter) { my $ret = $filter->scrub($mime) or return; return if $ret == REJECT(); |