From 66131ed2ce12c9fe00c294514743480a5ac47bd5 Mon Sep 17 00:00:00 2001 From: Daniel Axtens Date: Wed, 28 Jun 2017 17:48:46 +1000 Subject: [PATCH] parser: catch failures in decoding headers Headers can fail to decode: - if a part cannot be encoded as ascii - if the coding hint names a codec that doesn't exist - if there's a null byte in the codec name Catch these errors. Signed-off-by: Daniel Axtens Reviewed-by: Andrew Donnellan Reviewed-by: Stephen Finucane --- patchwork/parser.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/patchwork/parser.py b/patchwork/parser.py index 534e92c7..f9b5dc04 100644 --- a/patchwork/parser.py +++ b/patchwork/parser.py @@ -90,9 +90,11 @@ def sanitise_header(header_contents, header_name=None): header = make_header(value, header_name=header_name, continuation_ws='\t') - except UnicodeDecodeError: - # At least one of the parts cannot be encoded as ascii. - # Find out which one and fix it somehow. + except (UnicodeDecodeError, LookupError, ValueError, TypeError): + # - a part cannot be encoded as ascii. (UnicodeDecodeError), or + # - we don't have a codec matching the hint (LookupError) + # - the codec has a null byte (Py3 ValueError/Py2 TypeError) + # Find out which part and fix it somehow. # # We get here under Py2 when there's non-7-bit chars in header, # or under Py2 or Py3 where decoding with the coding hint fails. -- 2.47.3