parsemail: ignore html part of multi-part comments

Message ID 20180620122142.9917-1-yuri.volchkov@gmail.com
State Accepted
Headers show
Series
  • parsemail: ignore html part of multi-part comments
Related show

Commit Message

Yuri Volchkov June 20, 2018, 12:21 p.m.
Currently an html-protection present only for patch-emails. If a
multi-part comment-email arrives, it messes up patchwork. In my case,
the symptom was a non intended 'Signed-off-by' in the downloaded
patches, with html-like junk.

This patch makes parsemail skip all parts of comment which are not
text/plain.

Of course, this will drop html-only emails completely. But they can
not be parsed anyways.

Signed-off-by: Yuri Volchkov <yuri.volchkov@gmail.com>
---
 patchwork/parser.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Stephen Finucane June 24, 2018, 7:36 p.m. | #1
On Wed, 2018-06-20 at 14:21 +0200, Yuri Volchkov wrote:
> Currently an html-protection present only for patch-emails. If a
> multi-part comment-email arrives, it messes up patchwork. In my case,
> the symptom was a non intended 'Signed-off-by' in the downloaded
> patches, with html-like junk.
> 
> This patch makes parsemail skip all parts of comment which are not
> text/plain.
> 
> Of course, this will drop html-only emails completely. But they can
> not be parsed anyways.

Looks good to me. I've applied this to both master and stable/2.1 along
with a patch to test things. Thanks for the contribution!

Stephen

> Signed-off-by: Yuri Volchkov <yuri.volchkov@gmail.com>
> ---
>  patchwork/parser.py | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/patchwork/parser.py b/patchwork/parser.py
> index 8f9af81..b1fb7b9 100644
> --- a/patchwork/parser.py
> +++ b/patchwork/parser.py
> @@ -576,9 +576,11 @@ def find_comment_content(mail):
>      """Extract content from a mail."""
>      commentbuf = ''
>  
> -    for payload, _ in _find_content(mail):
> +    for payload, subtype in _find_content(mail):
>          if not payload:
>              continue
> +        if subtype != 'plain':
> +            continue
>  
>          commentbuf += payload.strip() + '\n'
>

Patch

diff --git a/patchwork/parser.py b/patchwork/parser.py
index 8f9af81..b1fb7b9 100644
--- a/patchwork/parser.py
+++ b/patchwork/parser.py
@@ -576,9 +576,11 @@  def find_comment_content(mail):
     """Extract content from a mail."""
     commentbuf = ''
 
-    for payload, _ in _find_content(mail):
+    for payload, subtype in _find_content(mail):
         if not payload:
             continue
+        if subtype != 'plain':
+            continue
 
         commentbuf += payload.strip() + '\n'