Merge "Merge "Careful process validation for unaware providers." into nyc-dev am: 678dba737b" into nyc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
37b78dcdd7
@@ -10170,6 +10170,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
int N = providers.size();
|
int N = providers.size();
|
||||||
app.pubProviders.ensureCapacity(N + app.pubProviders.size());
|
app.pubProviders.ensureCapacity(N + app.pubProviders.size());
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
|
// TODO: keep logic in sync with installEncryptionUnawareProviders
|
||||||
ProviderInfo cpi =
|
ProviderInfo cpi =
|
||||||
(ProviderInfo)providers.get(i);
|
(ProviderInfo)providers.get(i);
|
||||||
boolean singleton = isSingleton(cpi.processName, cpi.applicationInfo,
|
boolean singleton = isSingleton(cpi.processName, cpi.applicationInfo,
|
||||||
@@ -11150,12 +11151,18 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
final PackageInfo pkgInfo = AppGlobals.getPackageManager()
|
final PackageInfo pkgInfo = AppGlobals.getPackageManager()
|
||||||
.getPackageInfo(pkgName, matchFlags, userId);
|
.getPackageInfo(pkgName, matchFlags, userId);
|
||||||
if (pkgInfo != null && !ArrayUtils.isEmpty(pkgInfo.providers)) {
|
if (pkgInfo != null && !ArrayUtils.isEmpty(pkgInfo.providers)) {
|
||||||
for (ProviderInfo provInfo : pkgInfo.providers) {
|
for (ProviderInfo pi : pkgInfo.providers) {
|
||||||
if (Objects.equals(provInfo.processName, app.processName)) {
|
// TODO: keep in sync with generateApplicationProvidersLocked
|
||||||
Log.v(TAG, "Installing " + provInfo);
|
final boolean processMatch = Objects.equals(pi.processName,
|
||||||
app.thread.scheduleInstallProvider(provInfo);
|
app.processName) || pi.multiprocess;
|
||||||
|
final boolean userMatch = isSingleton(pi.processName,
|
||||||
|
pi.applicationInfo, pi.name, pi.flags)
|
||||||
|
? (app.userId == UserHandle.USER_SYSTEM) : true;
|
||||||
|
if (processMatch && userMatch) {
|
||||||
|
Log.v(TAG, "Installing " + pi);
|
||||||
|
app.thread.scheduleInstallProvider(pi);
|
||||||
} else {
|
} else {
|
||||||
Log.v(TAG, "Skipping " + provInfo);
|
Log.v(TAG, "Skipping " + pi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user