From 76f824b18ca4e20b3e29d806b04976708acdd7ef Mon Sep 17 00:00:00 2001 From: Alex Kershaw Date: Fri, 12 Apr 2019 16:59:29 +0100 Subject: [PATCH] Catch exceptions thrown from UpdateEngine#applyPayload. Note: we can't add a CTS test for this behaviour since the UpdateEngine is an implementation detail. Fixes: 124106342 Test: Manually tested Change-Id: Ib8e6895211b5d39a4d037d383c115011084ea257 --- .../server/devicepolicy/AbUpdateInstaller.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java b/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java index d5cfab9601711..5acf83aeb8904 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/AbUpdateInstaller.java @@ -194,8 +194,17 @@ class AbUpdateInstaller extends UpdateInstaller { } UpdateEngine updateEngine = buildBoundUpdateEngine(); - updateEngine.applyPayload( - updatePath, mOffsetForUpdate, mSizeForUpdate, headerKeyValuePairs); + try { + updateEngine.applyPayload( + updatePath, mOffsetForUpdate, mSizeForUpdate, headerKeyValuePairs); + } catch (Exception e) { + // Prevent an automatic restart when an update is already being processed + // (http://b/124106342). + Log.w(UpdateInstaller.TAG, "Failed to install update from file.", e); + notifyCallbackOnError( + InstallSystemUpdateCallback.UPDATE_ERROR_UNKNOWN, + "Failed to install update from file."); + } } private boolean updateStateForPayload() throws IOException {