From e25ca5473460cb1d0976f17c5fde337787014426 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 12 Aug 2014 10:40:40 +0200 Subject: [PATCH] Allow own uid for getPackagesForUid and queryContentProviders Fixes #1871 --- CHANGELOG.md | 1 + .../bokhorst/xprivacy/XPackageManager.java | 26 ++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae8ae173f..dd9d5d541 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Changelog * Since these functions were moved recently, it is not possible to update them * Performance optimizations * Fixed all problems reported through the support data +* Allow own uid for *getPackagesForUid* and *queryContentProviders* ([issue](/../../issues/1871)) * Updated Dutch translation * Updated Italian translation diff --git a/src/biz/bokhorst/xprivacy/XPackageManager.java b/src/biz/bokhorst/xprivacy/XPackageManager.java index 00b985c40..80bfc1c30 100644 --- a/src/biz/bokhorst/xprivacy/XPackageManager.java +++ b/src/biz/bokhorst/xprivacy/XPackageManager.java @@ -171,9 +171,12 @@ protected void after(XParam param) throws Throwable { break; case Srv_getPackagesForUid: - if (param.getResult() != null) - if (isRestricted(param)) - param.setResult(null); + if (param.args.length > 0 && param.args[0] instanceof Integer && param.getResult() != null) { + int uid = (Integer) param.args[0]; + if (uid != Binder.getCallingUid()) + if (isRestricted(param)) + param.setResult(null); + } break; case Srv_getPersistentApplications: @@ -188,11 +191,6 @@ protected void after(XParam param) throws Throwable { param.setResult(filterPackageInfo((List) param.getResult())); break; - case Srv_queryContentProviders: - if (isRestricted(param)) - param.setResult(filterProviderInfo((List) param.getResult())); - break; - case Srv_queryIntentActivities: case Srv_queryIntentActivityOptions: case Srv_queryIntentContentProviders: @@ -236,10 +234,14 @@ protected void after(XParam param) throws Throwable { break; case queryContentProviders: - if (param.args.length > 0 && param.args[0] instanceof String && param.getResult() != null) { - String processName = (String) param.args[0]; - if (isRestrictedExtra(param, processName)) - param.setResult(filterProviderInfo((List) param.getResult())); + case Srv_queryContentProviders: + if (param.args.length > 1 && param.args[1] instanceof Integer && param.getResult() != null) { + int uid = (Integer) param.args[1]; + if (uid != Binder.getCallingUid()) { + String processName = (String) param.args[0]; + if (isRestrictedExtra(param, processName)) + param.setResult(filterProviderInfo((List) param.getResult())); + } } break;