From f21e4b59315f6f477f62cb6c79d9919f943f0939 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 28 Mar 2019 20:29:58 +0100 Subject: [PATCH] fix crashes when parsing bad dates java.lang.ArrayIndexOutOfBoundsException: length=13; index=42 at sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:454) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2340) at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2740) at java.util.Calendar.updateTime(Calendar.java:2589) at java.util.Calendar.getTimeInMillis(Calendar.java:1101) at java.util.Calendar.getTime(Calendar.java:1074) at java.text.SimpleDateFormat.parseInternal(SimpleDateFormat.java:1518) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1413) at java.text.DateFormat.parse(DateFormat.java:356) at org.fdroid.fdroid.Utils.parseDateFormat(Utils.java:577) at org.fdroid.fdroid.Utils.parseDate(Utils.java:592) at org.fdroid.fdroid.data.Apk.(Apk.java:178) java.lang.NumberFormatException: Not a number: at android.icu.math.BigDecimal.bad(BigDecimal.java:3349) at android.icu.math.BigDecimal.(BigDecimal.java:526) at android.icu.math.BigDecimal.(BigDecimal.java:910) at android.icu.text.DigitList.getBigDecimalICU(DigitList.java:278) at android.icu.text.DecimalFormat.parse(DecimalFormat.java:2058) at android.icu.text.DecimalFormat.parse(DecimalFormat.java:1931) at java.text.DecimalFormat.parse(DecimalFormat.java:804) at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2353) at java.text.SimpleDateFormat.parseInternal(SimpleDateFormat.java:1615) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1528) at java.text.DateFormat.parse(DateFormat.java:360) at org.fdroid.fdroid.Utils.parseDateFormat(Utils.java:577) at org.fdroid.fdroid.Utils.parseDate(Utils.java:592) at org.fdroid.fdroid.data.App.(App.java:311) at org.fdroid.fdroid.views.whatsnew.WhatsNewAdapter.onBindViewHolder(WhatsNewAdapter.java:95) at org.fdroid.fdroid.views.whatsnew.WhatsNewAdapter.onBindViewHolder(WhatsNewAdapter.java:19) java.lang.ArrayIndexOutOfBoundsException: length=13; index=36 at sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:454) at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2411) at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2813) at java.util.Calendar.updateTime(Calendar.java:3397) at java.util.Calendar.getTimeInMillis(Calendar.java:1761) at java.util.Calendar.getTime(Calendar.java:1734) at java.text.SimpleDateFormat.parseInternal(SimpleDateFormat.java:1633) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1528) at java.text.DateFormat.parse(DateFormat.java:360) at org.fdroid.fdroid.Utils.parseDateFormat(Utils.java:577) at org.fdroid.fdroid.Utils.parseDate(Utils.java:592) at org.fdroid.fdroid.data.App.(App.java:314) at org.fdroid.fdroid.views.updates.UpdatesAdapter.onCanUpdateLoadFinished(UpdatesAdapter.java:241) at org.fdroid.fdroid.views.updates.UpdatesAdapter.onLoadFinished(UpdatesAdapter.java:224) at org.fdroid.fdroid.views.updates.UpdatesAdapter.onLoadFinished(UpdatesAdapter.java:67) --- app/src/main/java/org/fdroid/fdroid/Utils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/Utils.java b/app/src/main/java/org/fdroid/fdroid/Utils.java index 110838af2..16e3aa508 100644 --- a/app/src/main/java/org/fdroid/fdroid/Utils.java +++ b/app/src/main/java/org/fdroid/fdroid/Utils.java @@ -578,7 +578,8 @@ public final class Utils { Date result; try { result = format.parse(str); - } catch (ParseException e) { + } catch (ArrayIndexOutOfBoundsException | NumberFormatException | ParseException e) { + e.printStackTrace(); result = fallback; } return result;