diff options
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); } |