Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Verified Commit 8a0010a1 authored by Marvin W.'s avatar Marvin W. 🐿️
Browse files

Fix incomplete certificate requests causing crashes

parent 5d6e9ac0
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.google.android.gms.common;

import android.content.pm.PackageManager;
import android.os.RemoteException;
import android.support.annotation.Keep;
import android.util.Log;
@@ -55,6 +56,14 @@ public class GoogleCertificatesImpl extends IGoogleCertificatesApi.Stub {

    @Override
    public boolean isGoogleOrPlatformSigned(GoogleCertificatesQuery query, IObjectWrapper packageManager) throws RemoteException {
        PackageManager pm = ObjectWrapper.unwrapTyped(packageManager, PackageManager.class);
        if (query == null || query.getPackageName() == null) {
            return false;
        } else if (query.getCertData() == null) {
            if (pm == null) return false;
            return PackageUtils.isGooglePackage(pm, query.getPackageName());
        } else {
            return PackageUtils.isGooglePackage(query.getPackageName(), query.getCertData().getBytes());
        }
    }
}
+10 −1
Original line number Diff line number Diff line
@@ -69,6 +69,11 @@ public class PackageUtils {
        return isGooglePackage(packageName, signatureDigest);
    }

    public static boolean isGooglePackage(PackageManager packageManager, String packageName) {
        String signatureDigest = firstSignatureDigest(packageManager, packageName);
        return isGooglePackage(packageName, signatureDigest);
    }

    public static boolean isGooglePackage(String packageName, byte[] bytes) {
        return isGooglePackage(packageName, sha1sum(bytes));
    }
@@ -102,7 +107,11 @@ public class PackageUtils {

    @Nullable
    public static String firstSignatureDigest(Context context, String packageName) {
        PackageManager packageManager = context.getPackageManager();
        return firstSignatureDigest(context.getPackageManager(), packageName);
    }

    @Nullable
    public static String firstSignatureDigest(PackageManager packageManager, String packageName) {
        final PackageInfo info;
        try {
            info = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);