From 43072e283f2d109eac42e38dfc86783df4ddc74a Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Tue, 16 Jan 2018 22:04:28 -0500 Subject: [PATCH 1/2] Fix crash on some corruption when importing CSV Commons-CSV would throw a RuntimeException in some cases of bad CSV input. This was later changed to throwing an IllegalStateException. Updating to v1.5 to pick-up the change. --- app/build.gradle | 2 +- .../main/java/protect/card_locker/CsvDatabaseImporter.java | 2 +- app/src/test/java/protect/card_locker/ImportExportTest.java | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 02de23a45..cb7946f10 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,7 +47,7 @@ dependencies { compile 'com.android.support:design:27.0.2' compile 'com.journeyapps:zxing-android-embedded:3.5.0@aar' compile 'com.google.zxing:core:3.3.0' - compile 'org.apache.commons:commons-csv:1.2' + compile 'org.apache.commons:commons-csv:1.5' compile group: 'com.google.guava', name: 'guava', version: '20.0' compile 'com.github.apl-devs:appintro:v4.2.0' testCompile 'junit:junit:4.12' diff --git a/app/src/main/java/protect/card_locker/CsvDatabaseImporter.java b/app/src/main/java/protect/card_locker/CsvDatabaseImporter.java index 61a5e9f0a..6637f8a12 100644 --- a/app/src/main/java/protect/card_locker/CsvDatabaseImporter.java +++ b/app/src/main/java/protect/card_locker/CsvDatabaseImporter.java @@ -40,7 +40,7 @@ public class CsvDatabaseImporter implements DatabaseImporter parser.close(); database.setTransactionSuccessful(); } - catch(IllegalArgumentException e) + catch(IllegalArgumentException|IllegalStateException e) { throw new FormatException("Issue parsing CSV data", e); } diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index 858e37145..f38252591 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -198,7 +198,11 @@ public class ImportExportTest clearDatabase(); - String corruptEntry = "ThisStringIsLikelyNotPartOfAnyFormat"; + // commons-csv would throw a RuntimeException if an entry was quotes but had + // content after. For example: + // abc,def,""abc,abc + // ^ after the quote there should only be a , \n or EOF + String corruptEntry = "ThisStringIsLikelyNotPartOfAnyFormat,\"\"a"; ByteArrayInputStream inData = new ByteArrayInputStream((outData.toString() + corruptEntry).getBytes()); InputStreamReader inStream = new InputStreamReader(inData); From e73974536cba86ae54f2e4d558b34fc5ea2e1514 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Wed, 17 Jan 2018 08:04:26 -0500 Subject: [PATCH 2/2] Update how SDK 27 is acceptd on Travis-CI There are issues with using the "andorid" tool to accept some licenses on Travis-CI. The theory from Travis-CI is that the android binary is out of date. An alternative is using sdkmanager. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ad85789a8..ebb79ee47 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ install: - echo y | android update sdk -u -a -t tools - echo y | android update sdk -u -a -t platform-tools - echo y | android update sdk -u -a -t build-tools-26.0.2 -- echo y | android update sdk -u -a -t android-27 +- yes | sdkmanager "platforms;android-27" - echo y | android update sdk -u -a -t extra-google-m2repository - echo y | android update sdk -u -a -t extra-android-m2repository