From ad2be9ef85f76a882153988be392205a2e5b5e33 Mon Sep 17 00:00:00 2001 From: Junyu Lai Date: Thu, 19 May 2022 01:35:11 +0800 Subject: [PATCH] Add null check when list directory This change protect getPlatformFileListForPrefix from crashing when the directory exist but cannot be listed. This generally happens when the caller doesn't have enough permission to list. Test: atest CtsNetTestCases:android.net.cts.NetworkStatsManagerTest#testDataMigrationUtils Ignore-AOSP-First: in a topic with internal-only changes Bug: 230289468 Change-Id: I4177a8229cc9db18d76cb90c54a1b8d12ef8d98f Merged-In: I4177a8229cc9db18d76cb90c54a1b8d12ef8d98f (pure cherry-picked from ag/18457684) --- .../net/netstats/NetworkStatsDataMigrationUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java b/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java index de2f10b86a77a..76ee097c8c935 100644 --- a/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java +++ b/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java @@ -52,6 +52,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.net.ProtocolException; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Set; @@ -163,7 +164,10 @@ public class NetworkStatsDataMigrationUtils { final ArrayList list = new ArrayList<>(); final File platformFiles = getPlatformBaseDir(); if (platformFiles.exists()) { - for (String name : platformFiles.list()) { + final String[] files = platformFiles.list(); + if (files == null) return list; + Arrays.sort(files); + for (String name : files) { // Skip when prefix doesn't match. if (!name.startsWith(prefix + ".")) continue;