Updating Eth Service to use Eth Network Permission
Updating Ethernet Service network management APIs to require the manage ethernet networks permission. Bug: 210485380 Test: atest EthernetServiceTests Change-Id: Ibc9b2930fc0069efd7c6f4b833aba7d6c8e93311
This commit is contained in:
@@ -208,6 +208,12 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
|
|||||||
pw.decreaseIndent();
|
pw.decreaseIndent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void enforceNetworkManagementPermission() {
|
||||||
|
mContext.enforceCallingOrSelfPermission(
|
||||||
|
android.Manifest.permission.MANAGE_ETHERNET_NETWORKS,
|
||||||
|
"EthernetServiceImpl");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate the state of ethernet for APIs tied to network management.
|
* Validate the state of ethernet for APIs tied to network management.
|
||||||
*
|
*
|
||||||
@@ -216,12 +222,12 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
|
|||||||
*/
|
*/
|
||||||
private void validateNetworkManagementState(@NonNull final String iface,
|
private void validateNetworkManagementState(@NonNull final String iface,
|
||||||
final @NonNull String methodName) {
|
final @NonNull String methodName) {
|
||||||
|
enforceAutomotiveDevice(methodName);
|
||||||
|
enforceNetworkManagementPermission();
|
||||||
logIfEthernetNotStarted();
|
logIfEthernetNotStarted();
|
||||||
|
|
||||||
// TODO: add permission check here for MANAGE_INTERNAL_NETWORKS when it's available.
|
|
||||||
Objects.requireNonNull(iface, "Pass a non-null iface.");
|
Objects.requireNonNull(iface, "Pass a non-null iface.");
|
||||||
Objects.requireNonNull(methodName, "Pass a non-null methodName.");
|
Objects.requireNonNull(methodName, "Pass a non-null methodName.");
|
||||||
enforceAutomotiveDevice(methodName);
|
|
||||||
enforceInterfaceIsTracked(iface);
|
enforceInterfaceIsTracked(iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ public class EthernetNetworkFactoryTest {
|
|||||||
|
|
||||||
assertFalse(ret);
|
assertFalse(ret);
|
||||||
verifyNoStopOrStart();
|
verifyNoStopOrStart();
|
||||||
assertFailedListener(listener, "can't be updated as it is not configured");
|
assertFailedListener(listener, "can't be updated as it is not available");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -18,10 +18,13 @@ package com.android.server.ethernet;
|
|||||||
|
|
||||||
import static org.junit.Assert.assertThrows;
|
import static org.junit.Assert.assertThrows;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.doThrow;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@@ -176,6 +179,36 @@ public class EthernetServiceImplTest {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void denyManageEthPermission() {
|
||||||
|
doThrow(new SecurityException("")).when(mContext)
|
||||||
|
.enforceCallingOrSelfPermission(
|
||||||
|
eq(Manifest.permission.MANAGE_ETHERNET_NETWORKS), anyString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateConfigurationRejectsWithoutManageEthPermission() {
|
||||||
|
denyManageEthPermission();
|
||||||
|
assertThrows(SecurityException.class, () -> {
|
||||||
|
mEthernetServiceImpl.updateConfiguration(TEST_IFACE, UPDATE_REQUEST, NULL_LISTENER);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConnectNetworkRejectsWithoutManageEthPermission() {
|
||||||
|
denyManageEthPermission();
|
||||||
|
assertThrows(SecurityException.class, () -> {
|
||||||
|
mEthernetServiceImpl.connectNetwork(TEST_IFACE, NULL_LISTENER);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDisconnectNetworkRejectsWithoutManageEthPermission() {
|
||||||
|
denyManageEthPermission();
|
||||||
|
assertThrows(SecurityException.class, () -> {
|
||||||
|
mEthernetServiceImpl.disconnectNetwork(TEST_IFACE, NULL_LISTENER);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateConfiguration() {
|
public void testUpdateConfiguration() {
|
||||||
mEthernetServiceImpl.updateConfiguration(TEST_IFACE, UPDATE_REQUEST, NULL_LISTENER);
|
mEthernetServiceImpl.updateConfiguration(TEST_IFACE, UPDATE_REQUEST, NULL_LISTENER);
|
||||||
|
|||||||
Reference in New Issue
Block a user