Fix warning with firewall whitelist

This commit is contained in:
emanuele-f 2022-12-22 10:41:34 +01:00
parent 4edd1e7ede
commit 52832f996f
3 changed files with 10 additions and 3 deletions

View File

@ -93,19 +93,24 @@ public class AppsResolver {
// Get the AppDescriptor corresponding to the given package name
// No caching occurs. Virtual apps cannot be used.
// This is public to provide a fast resolution alternative to getAppByPackage
public static AppDescriptor resolveInstalledApp(PackageManager pm, String packageName, int pm_flags) {
public static AppDescriptor resolveInstalledApp(PackageManager pm, String packageName, int pm_flags, boolean warn_not_found) {
PackageInfo pinfo;
try {
pinfo = Utils.getPackageInfo(pm, packageName, pm_flags);
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "could not retrieve package: " + packageName);
if(warn_not_found)
Log.w(TAG, "could not retrieve package: " + packageName);
return null;
}
return new AppDescriptor(pm, pinfo);
}
public static AppDescriptor resolveInstalledApp(PackageManager pm, String packageName, int pm_flags) {
return resolveInstalledApp(pm, packageName, pm_flags, true);
}
@SuppressLint("DiscouragedPrivateApi")
public @Nullable AppDescriptor getAppByUid(int uid, int pm_flags) {
AppDescriptor app = mApps.get(uid);

View File

@ -131,6 +131,8 @@ public class PCAPdroid extends Application {
mFirewallWhitelist.addApp(0 /* root */);
mFirewallWhitelist.addApp(1000 /* android */);
mFirewallWhitelist.addApp(getPackageName() /* PCAPdroid */);
// see also https://github.com/microg/GmsCore/issues/1508#issuecomment-876269198
mFirewallWhitelist.addApp("com.google.android.gms" /* Google Play Services */);
mFirewallWhitelist.addApp("com.google.android.gsf" /* Google Services Framework (push notifications) */);
mFirewallWhitelist.addApp("com.google.android.ims" /* Carrier Services */);

View File

@ -159,7 +159,7 @@ public class MatchList {
if(tp == RuleType.APP) {
// TODO handle cross-users/profiles?
AppDescriptor app = AppsResolver.resolveInstalledApp(ctx.getPackageManager(), value, 0);
AppDescriptor app = AppsResolver.resolveInstalledApp(ctx.getPackageManager(), value, 0, false);
if(app != null)
value = app.getName();
} else if(tp == RuleType.HOST)