check whether installed APKs exist and are readable before hashing
I guess APKs could disappear, or perhaps not be readable. closes #699 Here's the stacktrace: java.io.FileNotFoundException: /system/priv-app/ATT_Ready2Go/ATT_Ready2Go.apk: open failed: ENOENT (No such file or directory) at org.fdroid.fdroid.Utils.getBinaryHash(Utils.java:405) at org.fdroid.fdroid.data.InstalledAppProviderService.onHandleIntent(InstalledAppProviderService.java:164) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61)
This commit is contained in:
parent
fa112ed303
commit
53cbb26209
@ -160,9 +160,12 @@ public class InstalledAppProviderService extends IntentService {
|
||||
if (ACTION_INSERT.equals(action)) {
|
||||
PackageInfo packageInfo = getPackageInfo(intent, packageName);
|
||||
if (packageInfo != null) {
|
||||
String hashType = "sha256";
|
||||
String hash = Utils.getBinaryHash(new File(packageInfo.applicationInfo.publicSourceDir), hashType);
|
||||
insertAppIntoDb(this, packageInfo, hashType, hash);
|
||||
File apk = new File(packageInfo.applicationInfo.publicSourceDir);
|
||||
if (apk.exists() && apk.canRead()) {
|
||||
String hashType = "sha256";
|
||||
String hash = Utils.getBinaryHash(apk, hashType);
|
||||
insertAppIntoDb(this, packageInfo, hashType, hash);
|
||||
}
|
||||
}
|
||||
} else if (ACTION_DELETE.equals(action)) {
|
||||
deleteAppFromDb(this, packageName);
|
||||
|
Loading…
x
Reference in New Issue
Block a user