Bug 1280382 - Catch ClassCastException that may occur on return from generic method r?mcomella draft
authorAndrzej Hunt <ahunt@mozilla.com>
Tue, 05 Jul 2016 09:29:30 -0700
changeset 384134 09968f2d2819d58b048bb958585a4baddf26e284
parent 384130 55e7347982396d56cecfe347c3f2d73562716216
child 524615 1e74445dc1f4708a0b74dacd10c5f944701f6049
push id22174
push userahunt@mozilla.com
push dateTue, 05 Jul 2016 16:30:29 +0000
reviewersmcomella
bugs1280382
milestone50.0a1
Bug 1280382 - Catch ClassCastException that may occur on return from generic method r?mcomella MozReview-Commit-ID: BfiAMAEY1jY
mobile/android/thirdparty/com/adjust/sdk/ActivityHandler.java
--- a/mobile/android/thirdparty/com/adjust/sdk/ActivityHandler.java
+++ b/mobile/android/thirdparty/com/adjust/sdk/ActivityHandler.java
@@ -708,21 +708,30 @@ public class ActivityHandler extends Han
         packageHandler.sendFirstPackage();
 
         if (updateActivityState(System.currentTimeMillis())) {
             writeActivityState();
         }
     }
 
     private void readActivityState() {
-        activityState = Util.readObject(adjustConfig.context, ACTIVITY_STATE_FILENAME, ACTIVITY_STATE_NAME);
+        try {
+            // readObject is a generic object, and can therefore return arbitrary generic objects
+            // that might not match the expected type. Therefore there will be an implicit cast
+            // here, which can fail:
+            activityState = Util.readObject(adjustConfig.context, ACTIVITY_STATE_FILENAME, ACTIVITY_STATE_NAME);
+        } catch (ClassCastException e) {
+        }
     }
 
     private void readAttribution() {
-        attribution = Util.readObject(adjustConfig.context, ATTRIBUTION_FILENAME, ATTRIBUTION_NAME);
+        try {
+            attribution = Util.readObject(adjustConfig.context, ATTRIBUTION_FILENAME, ATTRIBUTION_NAME);
+        } catch (ClassCastException e) {
+        }
     }
 
     private void writeActivityState() {
         Util.writeObject(activityState, adjustConfig.context, ACTIVITY_STATE_FILENAME, ACTIVITY_STATE_NAME);
     }
 
     private void writeAttribution() {
         Util.writeObject(attribution, adjustConfig.context, ATTRIBUTION_FILENAME, ATTRIBUTION_NAME);