diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 75dc4c118e..7b0dc36ce0 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -3863,24 +3863,36 @@ public class Helper { @Override public int read() throws IOException { int b = super.read(); - if (b >= 0 && ++count > max) - throw new IOException("Stream larger than " + max + " bytes"); + if (b >= 0) { + count++; + checkLength(); + } return b; } @Override public int read(byte[] b) throws IOException { - for (int i = 0; i < b.length; i++) { - b[i] = (byte) read(); - if (b[i] < 0) - return i; + int read = super.read(b); + if (read > 0) { + count += read; + checkLength(); } - return b.length; + return read; } @Override public int read(byte[] b, int off, int len) throws IOException { - throw new UnsupportedOperationException(); + int read = super.read(b, off, len); + if (read > 0) { + count += read; + checkLength(); + } + return read; + } + + private void checkLength() throws IOException { + if (count > max) + throw new IOException("Stream larger than " + max + " bytes"); } } } diff --git a/app/src/main/java/eu/faircode/email/ImageHelper.java b/app/src/main/java/eu/faircode/email/ImageHelper.java index c9a0dcd4ee..4c8bb456ab 100644 --- a/app/src/main/java/eu/faircode/email/ImageHelper.java +++ b/app/src/main/java/eu/faircode/email/ImageHelper.java @@ -311,7 +311,7 @@ class ImageHelper { svg.renderToCanvas(canvas); return bm; } catch (Throwable ex) { - throw new IOException("SVG, ex"); + throw new IOException("SVG, ex", ex); } }