Skip to content

Commit 64e4d64

Browse files
adithya2306aswin7469
authored andcommitted
NetworkPolicyManagerService: Avoid OOB in addSdkSandboxUidsIfNeeded
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 524 at android.util.SparseIntArray.keyAt(SparseIntArray.java:183) at com.android.server.net.NetworkPolicyManagerService.addSdkSandboxUidsIfNeeded(NetworkPolicyManagerService.java:5978) at com.android.server.net.NetworkPolicyManagerService.setUidFirewallRulesUL(NetworkPolicyManagerService.java:5998) at com.android.server.net.NetworkPolicyManagerService.updateRestrictedModeAllowlistUL(NetworkPolicyManagerService.java:4450) at com.android.server.net.NetworkPolicyManagerService$12.onAvailable(NetworkPolicyManagerService.java:1450) at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3823) at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3805) at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:4132) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.os.HandlerThread.run(HandlerThread.java:67) at com.android.server.ServiceThread.run(ServiceThread.java:44) Change-Id: I500f4c7b3c4bc7609c494e4ab8763389a3f2bdbb
1 parent 562288e commit 64e4d64

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

services/core/java/com/android/server/net/NetworkPolicyManagerService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5705,11 +5705,11 @@ private void setUidFirewallRulesUL(int chain, @Nullable SparseIntArray uidRules,
57055705
}
57065706

57075707
private void addSdkSandboxUidsIfNeeded(SparseIntArray uidRules) {
5708-
final int size = uidRules.size();
5708+
final SparseIntArray rules = uidRules.clone();
57095709
final SparseIntArray sdkSandboxUids = new SparseIntArray();
5710-
for (int index = 0; index < size; index++) {
5711-
final int uid = uidRules.keyAt(index);
5712-
final int rule = uidRules.valueAt(index);
5710+
for (int index = 0; index < rules.size(); index++) {
5711+
final int uid = rules.keyAt(index);
5712+
final int rule = rules.valueAt(index);
57135713
if (Process.isApplicationUid(uid)) {
57145714
sdkSandboxUids.put(Process.toSdkSandboxUid(uid), rule);
57155715
}
@@ -5728,8 +5728,8 @@ private void addSdkSandboxUidsIfNeeded(SparseIntArray uidRules) {
57285728
* specified here.
57295729
*/
57305730
private void setUidFirewallRulesUL(int chain, SparseIntArray uidRules) {
5731-
addSdkSandboxUidsIfNeeded(uidRules);
57325731
try {
5732+
addSdkSandboxUidsIfNeeded(uidRules);
57335733
int size = uidRules.size();
57345734
int[] uids = new int[size];
57355735
int[] rules = new int[size];

0 commit comments

Comments
 (0)