Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05f5cb45 authored by Adam Lesinski's avatar Adam Lesinski Committed by Android (Google) Code Review
Browse files

Merge "UsageStats: Gracefully handle corrupt filenames" into mnc-dev

parents 7748ea5f e03f17c8
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -191,7 +191,11 @@ class UsageStatsDatabase {

                for (File f : files) {
                    final AtomicFile af = new AtomicFile(f);
                    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();
                }
+8 −3
Original line number Diff line number Diff line
@@ -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());
        }

        try {
            return Long.parseLong(name);
        } catch (NumberFormatException e) {
            throw new IOException(e);
        }
    }

    public static void read(AtomicFile file, IntervalStats statsOut) throws IOException {