From: Daniel Axtens Date: Wed, 28 Jun 2017 07:48:46 +0000 (+1000) Subject: parser: catch failures in decoding headers X-Git-Tag: v2.0.0~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66131ed2ce12c9fe00c294514743480a5ac47bd5;p=thirdparty%2Fpatchwork.git 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 --- 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.