diff options
author | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2020-05-13 18:12:45 -0400 |
---|---|---|
committer | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2020-05-13 18:12:45 -0400 |
commit | 33a119739233a7d4f234cc7f38f3ec5f21058e4f (patch) | |
tree | 906085ba9874700f9ada7149d910183d87b2fde9 | |
parent | dd00e0fec2bb9fca72264754883dce655b5b411a (diff) | |
download | b4-33a119739233a7d4f234cc7f38f3ec5f21058e4f.tar.gz |
Don't fail when a message uses a weird charset
Found via auto-testing in:
https://lore.kernel.org/linux-sgx/20200421215316.56503-13-jarkko.sakkinen@linux.intel.com/raw
This is wrong on many levels:
Content-Type: text/plain; charset=a
Assume utf-8 when something like this happens and don't fail.
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
-rw-r--r-- | b4/__init__.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/b4/__init__.py b/b4/__init__.py index ecd746f..a3767bf 100644 --- a/b4/__init__.py +++ b/b4/__init__.py @@ -726,7 +726,13 @@ class LoreMessage: pcharset = part.get_content_charset() if not pcharset: pcharset = mcharset - payload = payload.decode(pcharset, errors='replace') + try: + payload = payload.decode(pcharset, errors='replace') + except LookupError: + # what kind of encoding is that? + # Whatever, we'll use utf-8 and hope for the best + payload = payload.decode('utf-8', errors='replace') + part.set_param('charset', 'utf-8') if self.body is None: self.body = payload continue |