From 0f4db07e4047ff16bbac0fa15e4d88c279fc288c Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 20 Dec 2018 16:45:42 +0100 Subject: [PATCH] Handle broken image data URIs --- .../java/eu/faircode/email/HtmlHelper.java | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 2601134caa..1e3c3fcc49 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -141,23 +141,29 @@ public class HtmlHelper { } // Data URI - if (data) { - // "\"Red"; + if (data) + try { + // "\"Red"; - String base64 = source.substring(source.indexOf(',') + 1); - byte[] bytes = Base64.decode(base64.getBytes(), 0); + String base64 = source.substring(source.indexOf(',') + 1); + byte[] bytes = Base64.decode(base64.getBytes(), 0); - Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); - if (bm == null) - throw new IllegalArgumentException("decode byte array failed"); + Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + if (bm == null) + throw new IllegalArgumentException("decode byte array failed"); - Drawable d = new BitmapDrawable(context.getResources(), bm); - d.setBounds(0, 0, bm.getWidth(), bm.getHeight()); - return d; - } + Drawable d = new BitmapDrawable(context.getResources(), bm); + d.setBounds(0, 0, bm.getWidth(), bm.getHeight()); + return d; + } catch (IllegalArgumentException ex) { + Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); + Drawable d = context.getResources().getDrawable(R.drawable.baseline_broken_image_24, context.getTheme()); + d.setBounds(0, 0, px / 2, px / 2); + return d; + } // Get cache folder File dir = new File(context.getCacheDir(), "images");