From 884056f84f3c05c203889206fa8c132ef83f3053 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Wed, 31 May 2023 19:53:36 -0700 Subject: [PATCH] Avoid infinite loop in case system_server does not have delete access. This must not ever happen, but if it does then let's crash with a good error message instead of hanging and getting out of stack memory exception. Bug: 269072872 Test: atest ShortcutManagerTest1 Change-Id: I7e4d9ac612c9e4e45d1521e3bebfb787fe21c953 --- .../core/java/com/android/server/pm/ResilientAtomicFile.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/ResilientAtomicFile.java b/services/core/java/com/android/server/pm/ResilientAtomicFile.java index 19aa4f8e8d0b7..54ca426a6dc31 100644 --- a/services/core/java/com/android/server/pm/ResilientAtomicFile.java +++ b/services/core/java/com/android/server/pm/ResilientAtomicFile.java @@ -230,7 +230,9 @@ final class ResilientAtomicFile implements Closeable { + Log.getStackTraceString(e)); } - mCurrentFile.delete(); + if (!mCurrentFile.delete()) { + throw new IllegalStateException("Failed to remove " + mCurrentFile); + } mCurrentFile = null; }