From a5e0d8f086b975ae3d3f39ce155cb0c92b7a1c3b Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 27 Mar 2021 15:28:01 +0100 Subject: [PATCH] Limit length of references header --- .../java/eu/faircode/email/FragmentCompose.java | 3 +++ .../java/eu/faircode/email/MessageHelper.java | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 646f0e6d30..78e55242c2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -3680,6 +3680,9 @@ public class FragmentCompose extends FragmentBase { "list".equals(action) || "dsn".equals(action) || "participation".equals(action)) { + // https://tools.ietf.org/html/rfc5322#section-3.6.4 + // The "References:" field will contain the contents of the parent's "References:" field (if any) + // followed by the contents of the parent's "Message-ID:" field (if any). data.draft.references = (ref.references == null ? "" : ref.references + " ") + ref.msgid; data.draft.inreplyto = ref.msgid; data.draft.thread = ref.thread; diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 590d3aa442..aa192f8ef5 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -197,8 +197,19 @@ public class MessageHelper { } // References - if (message.references != null) - imessage.addHeader("References", message.references); + if (message.references != null) { + // https://tools.ietf.org/html/rfc5322#section-2.1.1 + // Each line of characters MUST be no more than 998 characters + String references = message.references; + int hlen = "References: ".length(); + int sp = references.indexOf(' '); + while (references.length() > 998 - hlen && sp > 0) { + Log.i("Dropping reference=" + references.substring(0, sp)); + references = references.substring(sp); + sp = references.indexOf(' '); + } + imessage.addHeader("References", references); + } if (message.inreplyto != null) imessage.addHeader("In-Reply-To", message.inreplyto); imessage.addHeader(HEADER_CORRELATION_ID, message.msgid);