From f63842f7736e356efe41db9db3e588562d38331e Mon Sep 17 00:00:00 2001 From: Mygod Date: Thu, 8 Mar 2018 23:44:29 -0800 Subject: [PATCH] Fix signature checks in ResolvedPlugin --- mobile/src/main/java/com/github/shadowsocks/App.kt | 5 ++++- .../java/com/github/shadowsocks/plugin/ResolvedPlugin.kt | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mobile/src/main/java/com/github/shadowsocks/App.kt b/mobile/src/main/java/com/github/shadowsocks/App.kt index 5727a116..f721adc5 100644 --- a/mobile/src/main/java/com/github/shadowsocks/App.kt +++ b/mobile/src/main/java/com/github/shadowsocks/App.kt @@ -71,7 +71,10 @@ class App : Application() { val deviceContext: Context by lazy { if (Build.VERSION.SDK_INT < 24) this else DeviceContext(this) } val remoteConfig: FirebaseRemoteConfig by lazy { FirebaseRemoteConfig.getInstance() } private val tracker: Tracker by lazy { GoogleAnalytics.getInstance(deviceContext).newTracker(R.xml.tracker) } - val info: PackageInfo by lazy { packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES) } + val info: PackageInfo by lazy { getPackageInfo(packageName) } + + fun getPackageInfo(packageName: String) = + packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)!! fun startService() { val intent = Intent(this, BaseService.serviceClass.java) diff --git a/mobile/src/main/java/com/github/shadowsocks/plugin/ResolvedPlugin.kt b/mobile/src/main/java/com/github/shadowsocks/plugin/ResolvedPlugin.kt index faa042b1..b023eacb 100644 --- a/mobile/src/main/java/com/github/shadowsocks/plugin/ResolvedPlugin.kt +++ b/mobile/src/main/java/com/github/shadowsocks/plugin/ResolvedPlugin.kt @@ -33,5 +33,7 @@ abstract class ResolvedPlugin(protected val resolveInfo: ResolveInfo) : Plugin() override val icon: Drawable by lazy { resolveInfo.loadIcon(app.packageManager) } override val defaultConfig: String by lazy { metaData.getString(PluginContract.METADATA_KEY_DEFAULT_CONFIG) } override val packageName: String get() = resolveInfo.resolvePackageName - override val trusted by lazy { app.info.signatures.any(PluginManager.trustedSignatures::contains) } + override val trusted by lazy { + app.getPackageInfo(packageName).signatures.any(PluginManager.trustedSignatures::contains) + } }