bitfireAT / ical4android

Allows usage of iCalendar files with the Android calendar provider
GNU General Public License v3.0
18 stars 10 forks source link

Stackoverflow on Standard in Vtimezone #119

Closed sunkup closed 9 months ago

sunkup commented 9 months ago

Update by @rfc2822: already reported – depends on https://github.com/ical4j/ical4j/issues/637


Below ics will result in a stack overflow error:

BEGIN:VCALENDAR
PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Europe/Berlin
BEGIN:STANDARD
DTSTART;TZID=Europe/Berlin:19800928T030000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
``` java.lang.StackOverflowError: stack size 1038KB at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:117) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) at java.util.GregorianCalendar.(GregorianCalendar.java:622) at java.util.Calendar.createCalendar(Calendar.java:1025) at java.util.Calendar.getInstance(Calendar.java:989) at net.fortuna.ical4j.model.CalendarDateFormatFactory$DateFormat.format(CalendarDateFormatFactory.java:298) at java.text.DateFormat.format(DateFormat.java:337) at net.fortuna.ical4j.model.Iso8601.toString(Iso8601.java:134) at net.fortuna.ical4j.model.DateTime.toString(DateTime.java:503) at net.fortuna.ical4j.model.component.Observance.calculateOnset(Observance.java:286) at net.fortuna.ical4j.model.component.Observance.getLatestOnset(Observance.java:146) at net.fortuna.ical4j.model.component.VTimeZone.getApplicableObservance(VTimeZone.java:200) at net.fortuna.ical4j.model.TimeZone.getOffset(TimeZone.java:122) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2285) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2254) at java.util.Calendar.setTimeInMillis(Calendar.java:1122) [...] ```
github-actions[bot] commented 9 months ago

This PR/issue depends on:

rfc2822 commented 9 months ago

Seems to be fixed with ical4j 3.2.14.

@ArnyminerZ Can you please try your test (from the linked ical4j issue) with ical4j 3.2.13 and 3.2.14 and verify that it's fixed? And if yes, prepare a PR that updates to 3.2.14 and closes this issue.

ArnyminerZ commented 9 months ago

Looks like it has been fixed at some point. So patches needed. Both the ICS posted by Sunik and the one in the ical4j issue work fine.

ArnyminerZ commented 9 months ago

Closing until further cases

rfc2822 commented 9 months ago

It's fixed without updating to 3.2.14?

Ah we're on 3.2.14 already