Skip to content

Commit 16495ae

Browse files
committed
Do not attempt to parse empty json files in MetaDataStore
1 parent 0f6d89b commit 16495ae

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/internal/metadata/MetaDataStoreTest.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
import com.google.firebase.crashlytics.internal.CrashlyticsTestCase;
1818
import com.google.firebase.crashlytics.internal.common.CrashlyticsBackgroundWorker;
1919
import com.google.firebase.crashlytics.internal.persistence.FileStore;
20+
import java.io.IOException;
2021
import java.util.Collections;
2122
import java.util.HashMap;
2223
import java.util.Map;
2324

25+
@SuppressWarnings("ResultOfMethodCallIgnored") // Convenient use of files.
2426
public class MetaDataStoreTest extends CrashlyticsTestCase {
2527

2628
private static final String SESSION_ID_1 = "session1";
@@ -40,7 +42,7 @@ public class MetaDataStoreTest extends CrashlyticsTestCase {
4042
private static final String ESCAPED = "\ttest\nvalue";
4143

4244
private FileStore fileStore;
43-
private CrashlyticsBackgroundWorker worker = new CrashlyticsBackgroundWorker(Runnable::run);
45+
private final CrashlyticsBackgroundWorker worker = new CrashlyticsBackgroundWorker(Runnable::run);
4446

4547
private MetaDataStore storeUnderTest;
4648

@@ -83,7 +85,7 @@ public void testWriteUserData_singleField() {
8385
public void testWriteUserData_null() {
8486
storeUnderTest.writeUserData(SESSION_ID_1, metadataWithUserId(SESSION_ID_1, null).getUserId());
8587
UserMetadata userData = UserMetadata.loadFromExistingSession(SESSION_ID_1, fileStore, worker);
86-
assertEquals(null, userData.getUserId());
88+
assertNull(userData.getUserId());
8789
}
8890

8991
public void testWriteUserData_emptyString() {
@@ -112,6 +114,12 @@ public void testWriteUserData_readDifferentSession() {
112114
assertNull(userData.getUserId());
113115
}
114116

117+
public void testReadUserData_emptyData() throws IOException {
118+
storeUnderTest.getUserDataFileForSession(SESSION_ID_1).createNewFile();
119+
UserMetadata userData = UserMetadata.loadFromExistingSession(SESSION_ID_1, fileStore, worker);
120+
assertNull(userData.getUserId());
121+
}
122+
115123
public void testReadUserData_noStoredData() {
116124
UserMetadata userData = UserMetadata.loadFromExistingSession(SESSION_ID_1, fileStore, worker);
117125
assertNull(userData.getUserId());
@@ -237,6 +245,12 @@ public void testWriteKeys_readSeparateFromUser() {
237245
assertEqualMaps(internalKeys, readInternalKeys);
238246
}
239247

248+
public void testReadKeys_emptyStoredData() throws IOException {
249+
storeUnderTest.getKeysFileForSession(SESSION_ID_1).createNewFile();
250+
final Map<String, String> readKeys = storeUnderTest.readKeyData(SESSION_ID_1);
251+
assertEquals(0, readKeys.size());
252+
}
253+
240254
public void testReadKeys_noStoredData() {
241255
final Map<String, String> readKeys = storeUnderTest.readKeyData(SESSION_ID_1);
242256
assertEquals(0, readKeys.size());

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/metadata/MetaDataStore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void writeUserData(String sessionId, String userId) {
6868
@Nullable
6969
public String readUserId(String sessionId) {
7070
final File f = getUserDataFileForSession(sessionId);
71-
if (!f.exists()) {
71+
if (!f.exists() || f.length() == 0) {
7272
Logger.getLogger().d("No userId set for session " + sessionId);
7373
return null;
7474
}
@@ -114,7 +114,7 @@ public Map<String, String> readKeyData(String sessionId) {
114114
Map<String, String> readKeyData(String sessionId, boolean isInternal) {
115115
final File f =
116116
isInternal ? getInternalKeysFileForSession(sessionId) : getKeysFileForSession(sessionId);
117-
if (!f.exists()) {
117+
if (!f.exists() || f.length() == 0) {
118118
return Collections.emptyMap();
119119
}
120120

0 commit comments

Comments
 (0)