diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-08-29 01:01:00 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-08-29 01:01:00 +0000 |
| commit | 4379d6537e4d8982906e5f192462d62da8f50765 (patch) | |
| tree | d4ca1b57f1227743180ed3ce89c70e29d440eba9 /core/java/android | |
| parent | fcaa7621ea6b4c5e065980bbdbe60da5c2170523 (diff) | |
| parent | 2cc250b651b67a0aa76c3ed4375a6b40d9ebbdb9 (diff) | |
Merge "ContentResolver: Always set calling package name"
Diffstat (limited to 'core/java/android')
| -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"); |
