summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/StubLibraries.bp118
-rw-r--r--core/java/android/util/apk/SourceStampVerifier.java9
-rw-r--r--core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java2
-rw-r--r--services/core/java/com/android/server/vcn/VcnGatewayConnection.java2
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java28
5 files changed, 140 insertions, 19 deletions
diff --git a/api/StubLibraries.bp b/api/StubLibraries.bp
index ed5a8f26c0a8..7c8dd92f96d8 100644
--- a/api/StubLibraries.bp
+++ b/api/StubLibraries.bp
@@ -217,13 +217,17 @@ java_defaults {
}
java_defaults {
- name: "android-non-updatable_defaults_stubs_current",
- libs: ["stub-annotations"],
- static_libs: ["framework-res-package-jar"], // Export package of framework-res
+ name: "android-non-updatable_defaults",
sdk_version: "none",
system_modules: "none",
java_version: "1.8",
compile_dex: true,
+}
+
+java_defaults {
+ name: "android-non-updatable_from_source_defaults",
+ libs: ["stub-annotations"],
+ static_libs: ["framework-res-package-jar"], // Export package of framework-res
dist: {
targets: ["sdk"],
tag: ".jar",
@@ -233,7 +237,82 @@ java_defaults {
java_library {
name: "android-non-updatable.stubs",
- defaults: ["android-non-updatable_defaults_stubs_current"],
+ defaults: ["android-non-updatable_defaults"],
+ static_libs: [
+ "android-non-updatable.stubs.from-source",
+ ],
+ product_variables: {
+ build_from_text_stub: {
+ static_libs: [
+ "android-non-updatable.stubs.from-text",
+ ],
+ exclude_static_libs: [
+ "android-non-updatable.stubs.from-source",
+ ],
+ },
+ },
+}
+
+java_library {
+ name: "android-non-updatable.stubs.system",
+ defaults: ["android-non-updatable_defaults"],
+ static_libs: [
+ "android-non-updatable.stubs.system.from-source",
+ ],
+ product_variables: {
+ build_from_text_stub: {
+ static_libs: [
+ "android-non-updatable.stubs.system.from-text",
+ ],
+ exclude_static_libs: [
+ "android-non-updatable.stubs.system.from-source",
+ ],
+ },
+ },
+}
+
+java_library {
+ name: "android-non-updatable.stubs.module_lib",
+ defaults: ["android-non-updatable_defaults"],
+ static_libs: [
+ "android-non-updatable.stubs.module_lib.from-source",
+ ],
+ product_variables: {
+ build_from_text_stub: {
+ static_libs: [
+ "android-non-updatable.stubs.module_lib.from-text",
+ ],
+ exclude_static_libs: [
+ "android-non-updatable.stubs.module_lib.from-source",
+ ],
+ },
+ },
+}
+
+java_library {
+ name: "android-non-updatable.stubs.test",
+ defaults: ["android-non-updatable_defaults"],
+ static_libs: [
+ "android-non-updatable.stubs.test.from-source",
+ ],
+ product_variables: {
+ build_from_text_stub: {
+ static_libs: [
+ "android-non-updatable.stubs.test.from-text",
+ ],
+ exclude_static_libs: [
+ "android-non-updatable.stubs.test.from-source",
+ ],
+ },
+ },
+}
+
+java_library {
+ name: "android-non-updatable.stubs.from-source",
+ defaults: [
+ "android-non-updatable_defaults",
+ "android-non-updatable_from_source_defaults",
+ ],
srcs: [":api-stubs-docs-non-updatable"],
libs: ["all-modules-public-stubs"],
dist: {
@@ -242,8 +321,11 @@ java_library {
}
java_library {
- name: "android-non-updatable.stubs.system",
- defaults: ["android-non-updatable_defaults_stubs_current"],
+ name: "android-non-updatable.stubs.system.from-source",
+ defaults: [
+ "android-non-updatable_defaults",
+ "android-non-updatable_from_source_defaults",
+ ],
srcs: [":system-api-stubs-docs-non-updatable"],
libs: ["all-modules-system-stubs"],
dist: {
@@ -252,8 +334,11 @@ java_library {
}
java_library {
- name: "android-non-updatable.stubs.module_lib",
- defaults: ["android-non-updatable_defaults_stubs_current"],
+ name: "android-non-updatable.stubs.module_lib.from-source",
+ defaults: [
+ "android-non-updatable_defaults",
+ "android-non-updatable_from_source_defaults",
+ ],
srcs: [":module-lib-api-stubs-docs-non-updatable"],
libs: [
"sdk_module-lib_current_framework-tethering",
@@ -270,8 +355,11 @@ java_library {
}
java_library {
- name: "android-non-updatable.stubs.test",
- defaults: ["android-non-updatable_defaults_stubs_current"],
+ name: "android-non-updatable.stubs.test.from-source",
+ defaults: [
+ "android-non-updatable_defaults",
+ "android-non-updatable_from_source_defaults",
+ ],
srcs: [":test-api-stubs-docs-non-updatable"],
libs: ["all-modules-system-stubs"],
dist: {
@@ -280,7 +368,7 @@ java_library {
}
java_defaults {
- name: "non_updatable_api_library_defaults",
+ name: "android-non-updatable_from_text_defaults",
static_libs: ["framework-res-package-jar"],
libs: ["stub-annotations"],
}
@@ -291,7 +379,7 @@ java_api_library {
api_files: [
":non-updatable-current.txt",
],
- defaults: ["non_updatable_api_library_defaults"],
+ defaults: ["android-non-updatable_from_text_defaults"],
dep_api_srcs: "android_stubs_current.from-text",
}
@@ -302,7 +390,7 @@ java_api_library {
":non-updatable-current.txt",
":non-updatable-system-current.txt",
],
- defaults: ["non_updatable_api_library_defaults"],
+ defaults: ["android-non-updatable_from_text_defaults"],
dep_api_srcs: "android_system_stubs_current.from-text",
}
@@ -314,7 +402,7 @@ java_api_library {
":non-updatable-system-current.txt",
":non-updatable-test-current.txt",
],
- defaults: ["non_updatable_api_library_defaults"],
+ defaults: ["android-non-updatable_from_text_defaults"],
dep_api_srcs: "android_test_stubs_current.from-text",
}
@@ -326,7 +414,7 @@ java_api_library {
":non-updatable-system-current.txt",
":non-updatable-module-lib-current.txt",
],
- defaults: ["non_updatable_api_library_defaults"],
+ defaults: ["android-non-updatable_from_text_defaults"],
dep_api_srcs: "android_module_lib_stubs_current_full.from-text",
}
diff --git a/core/java/android/util/apk/SourceStampVerifier.java b/core/java/android/util/apk/SourceStampVerifier.java
index f9e312146ccf..11d7a005a647 100644
--- a/core/java/android/util/apk/SourceStampVerifier.java
+++ b/core/java/android/util/apk/SourceStampVerifier.java
@@ -142,16 +142,21 @@ public abstract class SourceStampVerifier {
private static SourceStampVerificationResult verify(
RandomAccessFile apk, byte[] sourceStampCertificateDigest, byte[] manifestBytes) {
+ SignatureInfo signatureInfo;
try {
- SignatureInfo signatureInfo =
+ signatureInfo =
ApkSigningBlockUtils.findSignature(apk, SOURCE_STAMP_BLOCK_ID);
+ } catch (IOException | SignatureNotFoundException | RuntimeException e) {
+ return SourceStampVerificationResult.notPresent();
+ }
+ try {
Map<Integer, Map<Integer, byte[]>> signatureSchemeApkContentDigests =
getSignatureSchemeApkContentDigests(apk, manifestBytes);
return verify(
signatureInfo,
getSignatureSchemeDigests(signatureSchemeApkContentDigests),
sourceStampCertificateDigest);
- } catch (IOException | SignatureNotFoundException | RuntimeException e) {
+ } catch (IOException | RuntimeException e) {
return SourceStampVerificationResult.notVerified();
}
}
diff --git a/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java b/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java
index bc0bddba2f20..e0c583ddc978 100644
--- a/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java
+++ b/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java
@@ -100,7 +100,7 @@ public class SourceStampVerifierTest {
SourceStampVerificationResult result =
SourceStampVerifier.verify(mPrimaryApk.getAbsolutePath());
- assertTrue(result.isPresent());
+ assertFalse(result.isPresent());
assertFalse(result.isVerified());
assertNull(result.getCertificate());
}
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
index a1ef537ff268..d480ddb092eb 100644
--- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -1889,7 +1889,7 @@ public class VcnGatewayConnection extends StateMachine {
mIpSecManager.applyTunnelModeTransform(
tunnelIface, IpSecManager.DIRECTION_FWD, transform);
}
- } catch (IOException e) {
+ } catch (IOException | IllegalArgumentException e) {
logInfo("Transform application failed for network " + token, e);
sessionLost(token, e);
}
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java
index 89271e1218d8..302af523a4bd 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java
@@ -42,6 +42,7 @@ import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -345,6 +346,33 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
verify(mConnMgr).reportNetworkConnectivity(eq(mNetworkAgent.getNetwork()), eq(false));
}
+ @Test
+ public void testMigrationHandleFailure() throws Exception {
+ triggerChildOpened();
+ mTestLooper.dispatchAll();
+ assertEquals(mIkeConnectionInfo, mGatewayConnection.getIkeConnectionInfo());
+
+ mGatewayConnection
+ .getUnderlyingNetworkControllerCallback()
+ .onSelectedUnderlyingNetworkChanged(TEST_UNDERLYING_NETWORK_RECORD_2);
+
+ final IkeSessionConnectionInfo newIkeConnectionInfo =
+ new IkeSessionConnectionInfo(
+ TEST_ADDR_V4, TEST_ADDR_V4_2, TEST_UNDERLYING_NETWORK_RECORD_2.network);
+ getIkeSessionCallback().onIkeSessionConnectionInfoChanged(newIkeConnectionInfo);
+ getChildSessionCallback()
+ .onIpSecTransformsMigrated(makeDummyIpSecTransform(), makeDummyIpSecTransform());
+
+ doThrow(new IllegalArgumentException("testMigrationHandleFailure"))
+ .when(mIpSecSvc)
+ .setNetworkForTunnelInterface(anyInt(), any(), any());
+
+ mTestLooper.dispatchAll();
+
+ assertEquals(mGatewayConnection.mDisconnectingState, mGatewayConnection.getCurrentState());
+ verify(mIkeSession).close();
+ }
+
private void triggerChildOpened() {
triggerChildOpened(Collections.singletonList(TEST_INTERNAL_ADDR), TEST_DNS_ADDR);
}