From c0f7fe040541fbb51f43bc24c5ecdd6b31520095 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 29 Jan 2024 08:56:08 +0100 Subject: [PATCH] Prevent index out of range --- .../eu/faircode/email/FragmentMessages.java | 5 ++- .../java/eu/faircode/email/MessageHelper.java | 33 +++++++++++-------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 1bc2c85c87..191fb8a6b9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -10292,8 +10292,11 @@ public class FragmentMessages extends FragmentBase return null; ICalendar icalendar = CalendarHelper.parse(context, calendar.getFile(context)); - VEvent event = icalendar.getEvents().get(0); + List events = icalendar.getEvents(); + if (events == null || events.size() == 0) + return null; + VEvent event = events.get(0); int status = CalendarContract.Events.STATUS_TENTATIVE; if (event.getStatus() != null && Status.CONFIRMED.equals(event.getStatus().getValue())) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 70ac0d95ec..7d262fc361 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -4461,20 +4461,25 @@ public class MessageHelper { File file = local.getFile(context); ICalendar icalendar = CalendarHelper.parse(context, file); - Method method = icalendar.getMethod(); - VEvent event = icalendar.getEvents().get(0); - - // https://www.rfc-editor.org/rfc/rfc5546#section-3.2 - if (method != null && method.isCancel()) - CalendarHelper.delete(context, event, message); - else if (method == null || method.isRequest()) { - if (ical_tentative) - CalendarHelper.insert(context, icalendar, event, - CalendarContract.Events.STATUS_TENTATIVE, account, message); - else - EntityLog.log(context, "Tentative event not stored"); - } else - EntityLog.log(context, "Unknown event method=" + method.getValue()); + List events = icalendar.getEvents(); + if (events == null || events.size() == 0) + EntityLog.log(context, "No events"); + else { + VEvent event = events.get(0); + + // https://www.rfc-editor.org/rfc/rfc5546#section-3.2 + Method method = icalendar.getMethod(); + if (method != null && method.isCancel()) + CalendarHelper.delete(context, event, message); + else if (method == null || method.isRequest()) { + if (ical_tentative) + CalendarHelper.insert(context, icalendar, event, + CalendarContract.Events.STATUS_TENTATIVE, account, message); + else + EntityLog.log(context, "Tentative event not stored"); + } else + EntityLog.log(context, "Unknown event method=" + method.getValue()); + } } catch (Throwable ex) { Log.w(ex); db.attachment().setWarning(local.id, Log.formatThrowable(ex));