Loading core/java/android/app/ActivityThread.java +0 −4 Original line number Diff line number Diff line Loading @@ -3298,10 +3298,6 @@ public final class ActivityThread { Slog.e(TAG, "Failed to find provider info for " + name); return null; } if (holder.permissionFailure != null) { throw new SecurityException("Permission " + holder.permissionFailure + " required for provider " + name); } IContentProvider prov = installProvider(context, holder.provider, holder.info, true); Loading core/java/android/app/IActivityManager.java +0 −10 Original line number Diff line number Diff line Loading @@ -326,19 +326,11 @@ public interface IActivityManager extends IInterface { /** Information you can retrieve about a particular application. */ public static class ContentProviderHolder implements Parcelable { public final ProviderInfo info; public final String permissionFailure; public IContentProvider provider; public boolean noReleaseNeeded; public ContentProviderHolder(ProviderInfo _info) { info = _info; permissionFailure = null; } public ContentProviderHolder(ProviderInfo _info, String _permissionFailure) { info = _info; permissionFailure = _permissionFailure; } public int describeContents() { Loading @@ -347,7 +339,6 @@ public interface IActivityManager extends IInterface { public void writeToParcel(Parcel dest, int flags) { info.writeToParcel(dest, 0); dest.writeString(permissionFailure); if (provider != null) { dest.writeStrongBinder(provider.asBinder()); } else { Loading @@ -369,7 +360,6 @@ public interface IActivityManager extends IInterface { private ContentProviderHolder(Parcel source) { info = ProviderInfo.CREATOR.createFromParcel(source); permissionFailure = source.readString(); provider = ContentProviderNative.asInterface( source.readStrongBinder()); noReleaseNeeded = source.readInt() != 0; Loading core/java/android/content/ContentProvider.java +6 −4 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public abstract class ContentProvider implements ComponentCallbacks { private String mReadPermission; private String mWritePermission; private PathPermission[] mPathPermissions; private boolean mExported; private Transport mTransport = new Transport(); Loading Loading @@ -257,9 +258,9 @@ public abstract class ContentProvider implements ComponentCallbacks { final Context context = getContext(); final String rperm = getReadPermission(); final int pid = Binder.getCallingPid(); if (rperm == null if (mExported && (rperm == null || context.checkPermission(rperm, pid, uid) == PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED)) { return; } Loading Loading @@ -303,9 +304,9 @@ public abstract class ContentProvider implements ComponentCallbacks { final Context context = getContext(); final String wperm = getWritePermission(); final int pid = Binder.getCallingPid(); if (wperm == null if (mExported && (wperm == null || context.checkPermission(wperm, pid, uid) == PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED)) { return true; } Loading Loading @@ -786,6 +787,7 @@ public abstract class ContentProvider implements ComponentCallbacks { setReadPermission(info.readPermission); setWritePermission(info.writePermission); setPathPermissions(info.pathPermissions); mExported = info.exported; } ContentProvider.this.onCreate(); } Loading services/java/com/android/server/am/ActivityManagerService.java +30 −17 Original line number Diff line number Diff line Loading @@ -1163,7 +1163,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } catch (RemoteException e) { } } catch (NameNotFoundException e) { Log.w(TAG, "Unable to create context for heavy notification", e); Slog.w(TAG, "Unable to create context for heavy notification", e); } } break; case CANCEL_HEAVY_NOTIFICATION_MSG: { Loading Loading @@ -2368,7 +2368,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } if (proc == null) { Log.w(TAG, "crashApplication: nothing for uid=" + uid Slog.w(TAG, "crashApplication: nothing for uid=" + uid + " initialPid=" + initialPid + " packageName=" + packageName); return; Loading Loading @@ -4054,6 +4054,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen return false; } } if (!pi.exported && pi.applicationInfo.uid != uid) { return false; } return true; } catch (RemoteException e) { return false; Loading Loading @@ -4202,8 +4205,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (perm == null) { perm = new UriPermission(targetUid, uri); targetUris.put(uri, perm); } perm.modeFlags |= modeFlags; if (activity == null) { perm.globalModeFlags |= modeFlags; Loading @@ -4224,6 +4227,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen void grantUriPermissionFromIntentLocked(int callingUid, String targetPkg, Intent intent, ActivityRecord activity) { if (DEBUG_URI_PERMISSION) Slog.v(TAG, "Grant URI perm to " + (intent != null ? intent.getData() : null) + " from " + intent + "; flags=0x" + Integer.toHexString(intent != null ? intent.getFlags() : 0)); if (intent == null) { return; } Loading Loading @@ -4902,13 +4910,12 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } private final String checkContentProviderPermissionLocked( ProviderInfo cpi, ProcessRecord r, int mode) { ProviderInfo cpi, ProcessRecord r) { final int callingPid = (r != null) ? r.pid : Binder.getCallingPid(); final int callingUid = (r != null) ? r.info.uid : Binder.getCallingUid(); if (checkComponentPermission(cpi.readPermission, callingPid, callingUid, cpi.exported ? -1 : cpi.applicationInfo.uid) == PackageManager.PERMISSION_GRANTED && mode == ParcelFileDescriptor.MODE_READ_ONLY || mode == -1) { == PackageManager.PERMISSION_GRANTED) { return null; } if (checkComponentPermission(cpi.writePermission, callingPid, callingUid, Loading @@ -4925,8 +4932,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen PathPermission pp = pps[i]; if (checkComponentPermission(pp.getReadPermission(), callingPid, callingUid, cpi.exported ? -1 : cpi.applicationInfo.uid) == PackageManager.PERMISSION_GRANTED && mode == ParcelFileDescriptor.MODE_READ_ONLY || mode == -1) { == PackageManager.PERMISSION_GRANTED) { return null; } if (checkComponentPermission(pp.getWritePermission(), callingPid, callingUid, Loading @@ -4937,6 +4943,15 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } } HashMap<Uri, UriPermission> perms = mGrantedUriPermissions.get(callingUid); if (perms != null) { for (Map.Entry<Uri, UriPermission> uri : perms.entrySet()) { if (uri.getKey().getAuthority().equals(cpi.authority)) { return null; } } } String msg = "Permission Denial: opening provider " + cpi.name + " from " + (r != null ? r : "(null)") + " (pid=" + callingPid + ", uid=" + callingUid + ") requires " Loading Loading @@ -4966,10 +4981,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen cpr = mProvidersByName.get(name); if (cpr != null) { cpi = cpr.info; if (checkContentProviderPermissionLocked(cpi, r, -1) != null) { return new ContentProviderHolder(cpi, cpi.readPermission != null ? cpi.readPermission : cpi.writePermission); String msg; if ((msg=checkContentProviderPermissionLocked(cpi, r)) != null) { throw new SecurityException(msg); } if (r != null && cpr.canRunHere(r)) { Loading Loading @@ -5029,10 +5043,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen return null; } if (checkContentProviderPermissionLocked(cpi, r, -1) != null) { return new ContentProviderHolder(cpi, cpi.readPermission != null ? cpi.readPermission : cpi.writePermission); String msg; if ((msg=checkContentProviderPermissionLocked(cpi, r)) != null) { throw new SecurityException(msg); } if (!mSystemReady && !mDidUpdate && !mWaitingUpdate Loading Loading @@ -6204,7 +6217,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen Binder.restoreCallingIdentity(origId); } int res = result.get(); Log.w(TAG, "handleApplicationStrictModeViolation; res=" + res); Slog.w(TAG, "handleApplicationStrictModeViolation; res=" + res); } } Loading Loading
core/java/android/app/ActivityThread.java +0 −4 Original line number Diff line number Diff line Loading @@ -3298,10 +3298,6 @@ public final class ActivityThread { Slog.e(TAG, "Failed to find provider info for " + name); return null; } if (holder.permissionFailure != null) { throw new SecurityException("Permission " + holder.permissionFailure + " required for provider " + name); } IContentProvider prov = installProvider(context, holder.provider, holder.info, true); Loading
core/java/android/app/IActivityManager.java +0 −10 Original line number Diff line number Diff line Loading @@ -326,19 +326,11 @@ public interface IActivityManager extends IInterface { /** Information you can retrieve about a particular application. */ public static class ContentProviderHolder implements Parcelable { public final ProviderInfo info; public final String permissionFailure; public IContentProvider provider; public boolean noReleaseNeeded; public ContentProviderHolder(ProviderInfo _info) { info = _info; permissionFailure = null; } public ContentProviderHolder(ProviderInfo _info, String _permissionFailure) { info = _info; permissionFailure = _permissionFailure; } public int describeContents() { Loading @@ -347,7 +339,6 @@ public interface IActivityManager extends IInterface { public void writeToParcel(Parcel dest, int flags) { info.writeToParcel(dest, 0); dest.writeString(permissionFailure); if (provider != null) { dest.writeStrongBinder(provider.asBinder()); } else { Loading @@ -369,7 +360,6 @@ public interface IActivityManager extends IInterface { private ContentProviderHolder(Parcel source) { info = ProviderInfo.CREATOR.createFromParcel(source); permissionFailure = source.readString(); provider = ContentProviderNative.asInterface( source.readStrongBinder()); noReleaseNeeded = source.readInt() != 0; Loading
core/java/android/content/ContentProvider.java +6 −4 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public abstract class ContentProvider implements ComponentCallbacks { private String mReadPermission; private String mWritePermission; private PathPermission[] mPathPermissions; private boolean mExported; private Transport mTransport = new Transport(); Loading Loading @@ -257,9 +258,9 @@ public abstract class ContentProvider implements ComponentCallbacks { final Context context = getContext(); final String rperm = getReadPermission(); final int pid = Binder.getCallingPid(); if (rperm == null if (mExported && (rperm == null || context.checkPermission(rperm, pid, uid) == PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED)) { return; } Loading Loading @@ -303,9 +304,9 @@ public abstract class ContentProvider implements ComponentCallbacks { final Context context = getContext(); final String wperm = getWritePermission(); final int pid = Binder.getCallingPid(); if (wperm == null if (mExported && (wperm == null || context.checkPermission(wperm, pid, uid) == PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED)) { return true; } Loading Loading @@ -786,6 +787,7 @@ public abstract class ContentProvider implements ComponentCallbacks { setReadPermission(info.readPermission); setWritePermission(info.writePermission); setPathPermissions(info.pathPermissions); mExported = info.exported; } ContentProvider.this.onCreate(); } Loading
services/java/com/android/server/am/ActivityManagerService.java +30 −17 Original line number Diff line number Diff line Loading @@ -1163,7 +1163,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } catch (RemoteException e) { } } catch (NameNotFoundException e) { Log.w(TAG, "Unable to create context for heavy notification", e); Slog.w(TAG, "Unable to create context for heavy notification", e); } } break; case CANCEL_HEAVY_NOTIFICATION_MSG: { Loading Loading @@ -2368,7 +2368,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } if (proc == null) { Log.w(TAG, "crashApplication: nothing for uid=" + uid Slog.w(TAG, "crashApplication: nothing for uid=" + uid + " initialPid=" + initialPid + " packageName=" + packageName); return; Loading Loading @@ -4054,6 +4054,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen return false; } } if (!pi.exported && pi.applicationInfo.uid != uid) { return false; } return true; } catch (RemoteException e) { return false; Loading Loading @@ -4202,8 +4205,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (perm == null) { perm = new UriPermission(targetUid, uri); targetUris.put(uri, perm); } perm.modeFlags |= modeFlags; if (activity == null) { perm.globalModeFlags |= modeFlags; Loading @@ -4224,6 +4227,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen void grantUriPermissionFromIntentLocked(int callingUid, String targetPkg, Intent intent, ActivityRecord activity) { if (DEBUG_URI_PERMISSION) Slog.v(TAG, "Grant URI perm to " + (intent != null ? intent.getData() : null) + " from " + intent + "; flags=0x" + Integer.toHexString(intent != null ? intent.getFlags() : 0)); if (intent == null) { return; } Loading Loading @@ -4902,13 +4910,12 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } private final String checkContentProviderPermissionLocked( ProviderInfo cpi, ProcessRecord r, int mode) { ProviderInfo cpi, ProcessRecord r) { final int callingPid = (r != null) ? r.pid : Binder.getCallingPid(); final int callingUid = (r != null) ? r.info.uid : Binder.getCallingUid(); if (checkComponentPermission(cpi.readPermission, callingPid, callingUid, cpi.exported ? -1 : cpi.applicationInfo.uid) == PackageManager.PERMISSION_GRANTED && mode == ParcelFileDescriptor.MODE_READ_ONLY || mode == -1) { == PackageManager.PERMISSION_GRANTED) { return null; } if (checkComponentPermission(cpi.writePermission, callingPid, callingUid, Loading @@ -4925,8 +4932,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen PathPermission pp = pps[i]; if (checkComponentPermission(pp.getReadPermission(), callingPid, callingUid, cpi.exported ? -1 : cpi.applicationInfo.uid) == PackageManager.PERMISSION_GRANTED && mode == ParcelFileDescriptor.MODE_READ_ONLY || mode == -1) { == PackageManager.PERMISSION_GRANTED) { return null; } if (checkComponentPermission(pp.getWritePermission(), callingPid, callingUid, Loading @@ -4937,6 +4943,15 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } } HashMap<Uri, UriPermission> perms = mGrantedUriPermissions.get(callingUid); if (perms != null) { for (Map.Entry<Uri, UriPermission> uri : perms.entrySet()) { if (uri.getKey().getAuthority().equals(cpi.authority)) { return null; } } } String msg = "Permission Denial: opening provider " + cpi.name + " from " + (r != null ? r : "(null)") + " (pid=" + callingPid + ", uid=" + callingUid + ") requires " Loading Loading @@ -4966,10 +4981,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen cpr = mProvidersByName.get(name); if (cpr != null) { cpi = cpr.info; if (checkContentProviderPermissionLocked(cpi, r, -1) != null) { return new ContentProviderHolder(cpi, cpi.readPermission != null ? cpi.readPermission : cpi.writePermission); String msg; if ((msg=checkContentProviderPermissionLocked(cpi, r)) != null) { throw new SecurityException(msg); } if (r != null && cpr.canRunHere(r)) { Loading Loading @@ -5029,10 +5043,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen return null; } if (checkContentProviderPermissionLocked(cpi, r, -1) != null) { return new ContentProviderHolder(cpi, cpi.readPermission != null ? cpi.readPermission : cpi.writePermission); String msg; if ((msg=checkContentProviderPermissionLocked(cpi, r)) != null) { throw new SecurityException(msg); } if (!mSystemReady && !mDidUpdate && !mWaitingUpdate Loading Loading @@ -6204,7 +6217,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen Binder.restoreCallingIdentity(origId); } int res = result.get(); Log.w(TAG, "handleApplicationStrictModeViolation; res=" + res); Slog.w(TAG, "handleApplicationStrictModeViolation; res=" + res); } } Loading