Revert "Revert "[SettingsProvider] enforce permission on openFile""
Prevent third-party apps to write to ring tone files without permission.
This reverts commit 3726d5247ac10578ff1677b085d2d905027613d8.
Reason for revert: use appops manager's permission check method
BUG: 222687217
Test: atest android.appsecurity.cts.ExternalStorageHostTest#testExternalStorageReadDefaultUris
Change-Id: I5121bb7975e7a3893eefbf2ddbe6c9c6a82c6c74
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 077337c..aadfcea 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -818,6 +818,13 @@
getContext().enforceCallingPermission(Manifest.permission.INTERACT_ACROSS_USERS,
"Access files from the settings of another user");
}
+ final String callingPackage = getCallingPackage();
+ if (mode.contains("w") && !Settings.checkAndNoteWriteSettingsOperation(getContext(),
+ Binder.getCallingUid(), callingPackage, getCallingAttributionTag(),
+ true /* throwException */)) {
+ Slog.e(LOG_TAG, "Package: " + callingPackage + " is not allowed to modify "
+ + "system settings files.");
+ }
uri = ContentProvider.getUriWithoutUserId(uri);
final String cacheRingtoneSetting;