Skip to content

Commit f9d911a

Browse files
committed
Harden JwtTokenStore against corrupted SharedPreferences data
Wrap JSONObject parsing in ensureLoaded() with try-catch so that corrupted persisted data (e.g. from a process kill mid-write) does not permanently break JWT lookups and stall the operation queue. Made-with: Cursor
1 parent 4cb1242 commit f9d911a

File tree

1 file changed

+8
-3
lines changed
  • OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/identity

1 file changed

+8
-3
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/identity/JwtTokenStore.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.onesignal.user.internal.identity
33
import com.onesignal.core.internal.preferences.IPreferencesService
44
import com.onesignal.core.internal.preferences.PreferenceOneSignalKeys
55
import com.onesignal.core.internal.preferences.PreferenceStores
6+
import com.onesignal.debug.internal.logging.Logging
67
import org.json.JSONObject
78

89
/**
@@ -28,9 +29,13 @@ class JwtTokenStore(
2829
PreferenceOneSignalKeys.PREFS_OS_JWT_TOKENS,
2930
)
3031
if (json != null) {
31-
val obj = JSONObject(json)
32-
for (key in obj.keys()) {
33-
tokens[key] = obj.getString(key)
32+
try {
33+
val obj = JSONObject(json)
34+
for (key in obj.keys()) {
35+
tokens[key] = obj.getString(key)
36+
}
37+
} catch (e: Exception) {
38+
Logging.warn("JwtTokenStore: failed to parse persisted tokens, starting fresh", e)
3439
}
3540
}
3641
isLoaded = true

0 commit comments

Comments
 (0)