am 91211df6: am e63d3144: am a403d5cc: am 05f5cb45: Merge "UsageStats: Gracefully handle corrupt filenames" into mnc-dev

* commit '91211df6551d73e18ff195c27dd1e441fc70b86f':
  UsageStats: Gracefully handle corrupt filenames
This commit is contained in:
Adam Lesinski
2015-07-24 04:03:06 +00:00
committed by Android Git Automerger
2 changed files with 21 additions and 5 deletions

View File

@@ -191,7 +191,11 @@ class UsageStatsDatabase {
for (File f : files) {
final AtomicFile af = new AtomicFile(f);
mSortedStatFiles[i].put(UsageStatsXml.parseBeginTime(af), af);
try {
mSortedStatFiles[i].put(UsageStatsXml.parseBeginTime(af), af);
} catch (IOException e) {
Slog.e(TAG, "failed to index file: " + f, e);
}
}
}
}
@@ -506,7 +510,14 @@ class UsageStatsDatabase {
if (path.endsWith(BAK_SUFFIX)) {
f = new File(path.substring(0, path.length() - BAK_SUFFIX.length()));
}
long beginTime = UsageStatsXml.parseBeginTime(f);
long beginTime;
try {
beginTime = UsageStatsXml.parseBeginTime(f);
} catch (IOException e) {
beginTime = 0;
}
if (beginTime < expiryTime) {
new AtomicFile(f).delete();
}

View File

@@ -33,11 +33,11 @@ public class UsageStatsXml {
private static final String VERSION_ATTR = "version";
static final String CHECKED_IN_SUFFIX = "-c";
public static long parseBeginTime(AtomicFile file) {
public static long parseBeginTime(AtomicFile file) throws IOException {
return parseBeginTime(file.getBaseFile());
}
public static long parseBeginTime(File file) {
public static long parseBeginTime(File file) throws IOException {
String name = file.getName();
// Eat as many occurrences of -c as possible. This is due to a bug where -c
@@ -47,7 +47,12 @@ public class UsageStatsXml {
while (name.endsWith(CHECKED_IN_SUFFIX)) {
name = name.substring(0, name.length() - CHECKED_IN_SUFFIX.length());
}
return Long.parseLong(name);
try {
return Long.parseLong(name);
} catch (NumberFormatException e) {
throw new IOException(e);
}
}
public static void read(AtomicFile file, IntervalStats statsOut) throws IOException {