diff options
| author | Makoto Onuki <omakoto@google.com> | 2018-08-28 15:40:10 -0700 |
|---|---|---|
| committer | Makoto Onuki <omakoto@google.com> | 2018-08-28 15:57:48 -0700 |
| commit | 2cc250b651b67a0aa76c3ed4375a6b40d9ebbdb9 (patch) | |
| tree | 76eb60529e9e30e150796691aae051de3abb37f3 /core/java | |
| parent | 0886e9092196fca659576db1be95ee0db04606f3 (diff) | |
ContentResolver: Always set calling package name
Change-Id: I170fba7df8422c68d42c22eb5953b7a47f6c95d5
Fixes: 112306907
Test: atest CtsContentTestCases
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/content/ContentProvider.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index 085d77d5c1cd..f5339efb8d60 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -236,9 +236,15 @@ public abstract class ContentProvider implements ComponentCallbacks2 { // However, the caller may be expecting to access them my index. Hence, // we have to execute the query as if allowed to get a cursor with the // columns. We then use the column names to return an empty cursor. - Cursor cursor = ContentProvider.this.query( - uri, projection, queryArgs, - CancellationSignal.fromTransport(cancellationSignal)); + Cursor cursor; + final String original = setCallingPackage(callingPkg); + try { + cursor = ContentProvider.this.query( + uri, projection, queryArgs, + CancellationSignal.fromTransport(cancellationSignal)); + } finally { + setCallingPackage(original); + } if (cursor == null) { return null; } @@ -260,6 +266,7 @@ public abstract class ContentProvider implements ComponentCallbacks2 { @Override public String getType(Uri uri) { + // getCallingPackage() isn't available in getType(), as the javadoc states. validateIncomingUri(uri); uri = maybeGetUriWithoutUserId(uri); Trace.traceBegin(TRACE_TAG_DATABASE, "getType"); @@ -276,7 +283,12 @@ public abstract class ContentProvider implements ComponentCallbacks2 { int userId = getUserIdFromUri(uri); uri = maybeGetUriWithoutUserId(uri); if (enforceWritePermission(callingPkg, uri, null) != AppOpsManager.MODE_ALLOWED) { - return rejectInsert(uri, initialValues); + final String original = setCallingPackage(callingPkg); + try { + return rejectInsert(uri, initialValues); + } finally { + setCallingPackage(original); + } } Trace.traceBegin(TRACE_TAG_DATABASE, "insert"); final String original = setCallingPackage(callingPkg); @@ -440,6 +452,7 @@ public abstract class ContentProvider implements ComponentCallbacks2 { @Override public String[] getStreamTypes(Uri uri, String mimeTypeFilter) { + // getCallingPackage() isn't available in getType(), as the javadoc states. validateIncomingUri(uri); uri = maybeGetUriWithoutUserId(uri); Trace.traceBegin(TRACE_TAG_DATABASE, "getStreamTypes"); |
