From 8bcaef19e20fbc5caa84e9e8068cf16cdfd92333 Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Tue, 12 May 2020 14:20:03 +0200 Subject: [PATCH] Escape regex specific characters in cid when fetching true attachments --- .../model/OutlookMessage.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java index 988f88b..67fb857 100644 --- a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java +++ b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java @@ -15,15 +15,7 @@ import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; +import java.util.*; import static java.util.Arrays.copyOfRange; import static java.util.regex.Pattern.compile; @@ -313,7 +305,16 @@ public List fetchTrueAttachments() { } private boolean htmlContainsCID(final String html, final String cidName) { - return compile("cid:['\"]?" + cidName + "['\"]?").matcher(html).find(); + return compile("cid:['\"]?" + escapeCID(cidName) + "['\"]?").matcher(html).find(); + } + + private String escapeCID(final String cidName) { + String res = cidName; + final List specialCharacters = Arrays.asList('\\', '^', '$', '.', '|', '?', '*', '+', '(', ')', '[', '{'); + for (final Character c : specialCharacters) { + res = res.replace(c.toString(), "\\" + c.toString()); + } + return res; } /**