From 3f5b5ffc9377a9054c4182646a116fd8cb5b8f88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Wed, 19 Aug 2015 11:17:27 -0700 Subject: [PATCH] Avoid package receiver NPE crashes. Fixes #380. --- CHANGELOG.md | 2 ++ .../src/org/fdroid/fdroid/receiver/PackageAddedReceiver.java | 4 ++++ .../org/fdroid/fdroid/receiver/PackageUpgradedReceiver.java | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10d76c069..7a3768d7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ * Fix privileged installer confirmation screen issues on Android 2.X/3.X/4.X +* Fix a few crashes, including package receivers and NFC actions + ### 0.95.1 (2015-08-10) * Disable prompt to install F-Droid into system until it's more stable diff --git a/F-Droid/src/org/fdroid/fdroid/receiver/PackageAddedReceiver.java b/F-Droid/src/org/fdroid/fdroid/receiver/PackageAddedReceiver.java index bc9422ce2..0b29fb746 100644 --- a/F-Droid/src/org/fdroid/fdroid/receiver/PackageAddedReceiver.java +++ b/F-Droid/src/org/fdroid/fdroid/receiver/PackageAddedReceiver.java @@ -43,6 +43,10 @@ public class PackageAddedReceiver extends PackageReceiver { @Override protected void handle(Context context, String appId) { PackageInfo info = getPackageInfo(context, appId); + if (info == null) { + Log.d(TAG, "Could not get package info on '" + appId + "' - skipping."); + return; + } Log.d(TAG, "Inserting installed app info for '" + appId + "' (v" + info.versionCode + ")"); diff --git a/F-Droid/src/org/fdroid/fdroid/receiver/PackageUpgradedReceiver.java b/F-Droid/src/org/fdroid/fdroid/receiver/PackageUpgradedReceiver.java index f6c124488..2d32ad506 100644 --- a/F-Droid/src/org/fdroid/fdroid/receiver/PackageUpgradedReceiver.java +++ b/F-Droid/src/org/fdroid/fdroid/receiver/PackageUpgradedReceiver.java @@ -45,6 +45,10 @@ public class PackageUpgradedReceiver extends PackageReceiver { @Override protected void handle(Context context, String appId) { PackageInfo info = getPackageInfo(context, appId); + if (info == null) { + Log.d(TAG, "Could not get package info on '" + appId + "' - skipping."); + return; + } Log.d(TAG, "Updating installed app info for '" + appId + "' to v" + info.versionCode + " (" + info.versionName + ")");