From 6a769640b611fc853f7710bd9f3384162c680c93 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 1 Jul 2021 20:30:41 +0200 Subject: [PATCH] Data URI error handling --- .../java/eu/faircode/email/ImageHelper.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ImageHelper.java b/app/src/main/java/eu/faircode/email/ImageHelper.java index 728a47bedd..afb1e343f2 100644 --- a/app/src/main/java/eu/faircode/email/ImageHelper.java +++ b/app/src/main/java/eu/faircode/email/ImageHelper.java @@ -327,7 +327,7 @@ class ImageHelper { fitDrawable(d, a, scale, view); return d; } catch (IllegalArgumentException ex) { - Log.w(ex); + Log.i(ex); Drawable d = context.getDrawable(R.drawable.twotone_broken_image_24); d.setBounds(0, 0, px, px); return d; @@ -548,14 +548,18 @@ class ImageHelper { // "5ErkJggg==\" alt=\"Red dot\" />"; // https://en.wikipedia.org/wiki/Data_URI_scheme - int comma = source.indexOf(','); - if (comma < 0) - return null; - - String base64 = source.substring(comma + 1); - byte[] bytes = Base64.decode(base64.getBytes(), 0); - - return new ByteArrayInputStream(bytes); + try { + int comma = source.indexOf(','); + if (comma < 0) + throw new IllegalArgumentException("Comma missing"); + + String base64 = source.substring(comma + 1); + byte[] bytes = Base64.decode(base64.getBytes(), 0); + return new ByteArrayInputStream(bytes); + } catch (IllegalArgumentException ex) { + String excerpt = source.substring(0, Math.min(100, source.length())); + throw new IllegalArgumentException(excerpt, ex); + } } private static Drawable getCachedImage(Context context, long id, String source) {