From a60f654b1e3797a0f7a58e166deb4cf9c2e2f83d Mon Sep 17 00:00:00 2001 From: Paul Hu Date: Tue, 18 Jun 2019 04:26:29 -0700 Subject: [PATCH 1/2] Add SocketUtils CTS tests Test APIs below: makeNetlinkSocketAddress(int, int) makePacketSocketAddress(short, int) makePacketSocketAddress(int, byte[]) closeSocket(java.io.FileDescriptor) Bug:129200596 Test: atest FrameworksNetTests atest CtsNetTestCases --instant Merged-In: I36252fdf516cf4a9d4506b615cdb38f5413739e5 (cherry picked from commit 93a53224d3a1cd6fc1de7d94955e03116b744e4a) Change-Id: I0963acaf00c5bdd93db0503c426f190f409ca076 --- .../java/android/net/util/SocketUtilsTest.kt | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 tests/net/common/java/android/net/util/SocketUtilsTest.kt diff --git a/tests/net/common/java/android/net/util/SocketUtilsTest.kt b/tests/net/common/java/android/net/util/SocketUtilsTest.kt new file mode 100644 index 0000000000..9c7cfb0c71 --- /dev/null +++ b/tests/net/common/java/android/net/util/SocketUtilsTest.kt @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.net.util; + +import android.system.NetlinkSocketAddress +import android.system.Os +import android.system.OsConstants.AF_INET +import android.system.OsConstants.ETH_P_ALL +import android.system.OsConstants.IPPROTO_UDP +import android.system.OsConstants.RTMGRP_NEIGH +import android.system.OsConstants.SOCK_DGRAM +import android.system.PacketSocketAddress +import androidx.test.filters.SmallTest +import androidx.test.runner.AndroidJUnit4 +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Assert.fail +import org.junit.Test +import org.junit.runner.RunWith + +private const val TEST_INDEX = 123 +private const val TEST_PORT = 555 +@RunWith(AndroidJUnit4::class) +@SmallTest +class SocketUtilsTest { + @Test + fun testMakeNetlinkSocketAddress() { + val nlAddress = SocketUtils.makeNetlinkSocketAddress(TEST_PORT, RTMGRP_NEIGH) + if (nlAddress is NetlinkSocketAddress) { + assertEquals(TEST_PORT, nlAddress.getPortId()) + assertEquals(RTMGRP_NEIGH, nlAddress.getGroupsMask()) + } else { + fail("Not NetlinkSocketAddress object") + } + } + + @Test + fun testMakePacketSocketAddress() { + val pkAddress = SocketUtils.makePacketSocketAddress(ETH_P_ALL, TEST_INDEX) + assertTrue("Not PacketSocketAddress object", pkAddress is PacketSocketAddress) + + val ff = 0xff.toByte() + val pkAddress2 = SocketUtils.makePacketSocketAddress(TEST_INDEX, + byteArrayOf(ff, ff, ff, ff, ff, ff)) + assertTrue("Not PacketSocketAddress object", pkAddress2 is PacketSocketAddress) + } + + @Test + fun testCloseSocket() { + // Expect no exception happening with null object. + SocketUtils.closeSocket(null) + + val fd = Os.socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) + assertTrue(fd.valid()) + SocketUtils.closeSocket(fd) + assertFalse(fd.valid()) + // Expecting socket should be still invalid even closed socket again. + SocketUtils.closeSocket(fd) + assertFalse(fd.valid()) + } +} From 9cf0e61069b8d93978e35485ee6dc7d537935f22 Mon Sep 17 00:00:00 2001 From: wangmingming1 Date: Wed, 14 Aug 2019 15:38:22 +0800 Subject: [PATCH 2/2] notify netd about uid internet permission changes when package replaced 1. If a previous version of an app doesn't declare internet permission; 2. The User upgraded it to a new version and the new one does declare the internet permission; 3. The new app are not allowed to access the internet until next boot Bug: 137864893 Test: Manual, just make sure the onPackageChanged would be executed on package changes Change-Id: I69cdbb16a027a9c4e974b32371b1f64a23a51a23 Signed-off-by: wangmingming1 --- .../com/android/server/connectivity/PermissionMonitor.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index fbe2589bea..29c4bad2e1 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -129,6 +129,11 @@ public class PermissionMonitor { sendPackagePermissionsForUid(uid, getPermissionForUid(uid)); } + @Override + public void onPackageChanged(@NonNull String packageName, int uid) { + sendPackagePermissionsForUid(uid, getPermissionForUid(uid)); + } + @Override public void onPackageRemoved(String packageName, int uid) { sendPackagePermissionsForUid(uid, getPermissionForUid(uid));