From 1e53ffeea0011ca2a8fd583a2ebd3237c3dfc55c Mon Sep 17 00:00:00 2001 From: Dakkshesh Date: Sat, 30 Aug 2025 19:12:14 +0530 Subject: [PATCH] java: config: guard linkToDeath() in getPm() against null binder to prevent NPE fixes: https://github.com/beakthoven/TrickyStoreOSS/commit/23774e64a94c5cab08daa3ba2cec7a98db850cbd logs: 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: fatal: failed to get packages 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: java.lang.NullPointerException: Attempt to invoke interface method 'void android.os.IBinder.linkToDeath(android.os.IBinder$DeathRecipient, int)' on a null object reference 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at qe.a(Unknown Source:13) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at qe.c(Unknown Source:1) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at io.github.beakthoven.TrickyStoreOSS.interceptors.SecurityLevelInterceptor.onPreTransact(Unknown Source:107) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at io.github.beakthoven.TrickyStoreOSS.interceptors.BinderInterceptor.handlePreTransact(Unknown Source:50) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at io.github.beakthoven.TrickyStoreOSS.interceptors.BinderInterceptor.onTransact(Unknown Source:21) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.os.Binder.execTransactInternal(Binder.java:1392) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.os.Binder.execTransact(Binder.java:1299) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.os.BinderProxy.transactNative(Native Method) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.os.BinderProxy.transact(BinderProxy.java:685) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.system.keystore2.IKeystoreSecurityLevel$Stub$Proxy.generateKey(IKeystoreSecurityLevel.java:307) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.security.KeyStoreSecurityLevel.lambda$generateKey$0(KeyStoreSecurityLevel.java:145) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.security.KeyStoreSecurityLevel.$r8$lambda$XUH2FEW76sslYQDkYWi9Fg4yVEI(Unknown Source:0) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.security.KeyStoreSecurityLevel$$ExternalSyntheticLambda1.execute(Unknown Source:12) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.security.KeyStoreSecurityLevel.handleExceptions(KeyStoreSecurityLevel.java:55) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.security.KeyStoreSecurityLevel.generateKey(KeyStoreSecurityLevel.java:145) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at android.security.keystore2.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:651) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:750) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at W.a(Unknown Source:497) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at vi.a(Unknown Source:20) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at io.github.beakthoven.TrickyStoreOSS.MainKt.a(Unknown Source:175) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at io.github.beakthoven.TrickyStoreOSS.MainKt.main(Unknown Source:15) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 08-30 15:46:05.226 1811 1811 E TrickyStoreOSS: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:379) Signed-off-by: Dakkshesh --- .../java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt index 1c047fd..c802b5e 100644 --- a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt +++ b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt @@ -137,7 +137,7 @@ object PkgConfig { fun getPm(): IPackageManager? { if (iPm == null) { - val binder = ServiceManager.getService("package") + val binder = ServiceManager.getService("package") ?: return null binder.linkToDeath(packageManagerDeathRecipient, 0) iPm = IPackageManager.Stub.asInterface(binder) }