mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
46 lines
2.1 KiB
Diff
46 lines
2.1 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Oli Lan <olilan@google.com>
|
||
|
Date: Fri, 25 Mar 2022 10:02:41 +0000
|
||
|
Subject: [PATCH] RESTRICT AUTOMERGE Prevent non-admin users from deleting
|
||
|
system apps.
|
||
|
|
||
|
This addresses a security issue where the guest user can remove updates
|
||
|
for system apps.
|
||
|
|
||
|
With this CL, attempts to uninstall/downgrade system apps will fail if
|
||
|
attempted by a non-admin user.
|
||
|
|
||
|
This is a backport of ag/17352264.
|
||
|
|
||
|
Bug: 170646036
|
||
|
Test: manual, try uninstalling system app update as guest
|
||
|
Change-Id: I5bbaaf83d035c500bfc02ff4b9b0e7fb1e7c2feb
|
||
|
Merged-In: I4e959e296cca9bbdfc8fccc5e5e0e654ca524165
|
||
|
(cherry picked from commit a7621e0ce00f1d140b375518e26cf75693314203)
|
||
|
Merged-In: I5bbaaf83d035c500bfc02ff4b9b0e7fb1e7c2feb
|
||
|
---
|
||
|
.../com/android/server/pm/PackageManagerService.java | 10 ++++++++++
|
||
|
1 file changed, 10 insertions(+)
|
||
|
|
||
|
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||
|
index c0845d07d753..235e7d19d8f1 100644
|
||
|
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
||
|
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||
|
@@ -19837,6 +19837,16 @@ public class PackageManagerService extends IPackageManager.Stub
|
||
|
return PackageManager.DELETE_FAILED_INTERNAL_ERROR;
|
||
|
}
|
||
|
|
||
|
+ if (isSystemApp(uninstalledPs)) {
|
||
|
+ UserInfo userInfo = sUserManager.getUserInfo(userId);
|
||
|
+ if (userInfo == null || !userInfo.isAdmin()) {
|
||
|
+ Slog.w(TAG, "Not removing package " + packageName
|
||
|
+ + " as only admin user may downgrade system apps");
|
||
|
+ EventLog.writeEvent(0x534e4554, "170646036", -1, packageName);
|
||
|
+ return PackageManager.DELETE_FAILED_USER_RESTRICTED;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
// Static shared libs can be declared by any package, so let us not
|
||
|
// allow removing a package if it provides a lib others depend on.
|
||
|
pkg = mPackages.get(packageName);
|