From 4035e66772e1ae5b49599b578458caa6381a486a Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 7 Jun 2021 21:12:17 +0200 Subject: [PATCH] Catch OOM on parsing message --- .../java/eu/faircode/email/MessageHelper.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 51e406d5aa..ef956c7a64 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -2366,9 +2366,9 @@ public class MessageHelper { MessageParts getMessageParts() throws IOException, MessagingException { MessageParts parts = new MessageParts(); - ensureStructure(); - try { + ensureStructure(); + MimePart part = imessage; if (part.isMimeType("multipart/mixed")) { @@ -2486,8 +2486,21 @@ public class MessageHelper { Log.e(ct.toString()); } } - } catch (ParseException ex) { + } catch (ParseException | OutOfMemoryError ex) { Log.w(ex); + parts.warnings.add(Log.formatThrowable(ex, false)); + /* + java.lang.OutOfMemoryError: Failed to allocate a xxx byte allocation with yyy free bytes and zzMB until OOM + at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91) + at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201) + at com.sun.mail.util.ASCIIUtility.getBytes(ASCIIUtility:279) + at javax.mail.internet.MimeMessage.parse(MimeMessage:336) + at javax.mail.internet.MimeMessage.(MimeMessage:199) + at eu.faircode.email.MimeMessageEx.(MimeMessageEx:44) + at eu.faircode.email.MessageHelper._ensureMessage(MessageHelper:2732) + at eu.faircode.email.MessageHelper.ensureStructure(MessageHelper:2685) + at eu.faircode.email.MessageHelper.getMessageParts(MessageHelper:2368) + */ } getMessageParts(imessage, parts, null);