Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1b629b2 authored by Ashish Kumar Gaurav's avatar Ashish Kumar Gaurav Committed by Android (Google) Code Review
Browse files

Merge "Added permission checks for explicit grant while logging for getType calls."

parents cf81e99d b0419cc1
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -339,10 +339,17 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall
                        final ProviderInfo cpi = mContext.getPackageManager()
                                .resolveContentProvider(uri.getAuthority(),
                                PackageManager.ComponentInfoFlags.of(PackageManager.GET_META_DATA));
                        final int callingUserId = UserHandle.getUserId(callingUid);
                        final Uri userUri = (mSingleUser
                                && !UserHandle.isSameUser(mMyUid, callingUid))
                                ? maybeAddUserId(uri, callingUserId) : uri;
                        if (cpi.forceUriPermissions
                                && mInterface.checkUriPermission(uri,
                                callingUid, Intent.FLAG_GRANT_READ_URI_PERMISSION)
                                != PermissionChecker.PERMISSION_GRANTED) {
                                != PermissionChecker.PERMISSION_GRANTED
                                && getContext().checkUriPermission(userUri, Binder.getCallingPid(),
                                callingUid, Intent.FLAG_GRANT_READ_URI_PERMISSION)
                                != PackageManager.PERMISSION_GRANTED) {
                            FrameworkStatsLog.write(GET_TYPE_ACCESSED_WITHOUT_PERMISSION,
                                    enumCheckUriPermission,
                                    callingUid, uri.getAuthority(), type);
+6 −2
Original line number Diff line number Diff line
@@ -1121,11 +1121,15 @@ public class ContentProviderHelper {
            final String permissionCheck =
                    checkContentProviderPermission(cpi, callingPid, callingUid,
                            userId, checkUser, null);
            if (permissionCheck != null) {
            final boolean grantCheck = mService.checkUriPermission(uri, callingPid, callingUid,
                    Intent.FLAG_GRANT_READ_URI_PERMISSION , userId, null)
                    == PackageManager.PERMISSION_GRANTED;

            if (!grantCheck && permissionCheck != null) {
                FrameworkStatsLog.write(GET_TYPE_ACCESSED_WITHOUT_PERMISSION,
                        GET_TYPE_ACCESSED_WITHOUT_PERMISSION__LOCATION__AM_FRAMEWORK_PERMISSION,
                        callingUid, authority, type);
            } else if (cpi.forceUriPermissions
            } else if (!grantCheck && cpi.forceUriPermissions
                    && holder.provider.checkUriPermission(attributionSource,
                            uri, callingUid, Intent.FLAG_GRANT_READ_URI_PERMISSION)
                            != PermissionChecker.PERMISSION_GRANTED) {