Skip to content

Commit 33583ea

Browse files
authored
Merge some fixes from ReVanced
2 parents 1c06ec0 + 0651a51 commit 33583ea

File tree

7 files changed

+24
-12
lines changed

7 files changed

+24
-12
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ allprojects {
7272
group = 'org.microg.gms'
7373
ext.appVersionCode = 241017000
7474
ext.baseVersion = ext.appVersionCode.toString()[0..1] + '.' + ext.appVersionCode.toString()[2..3] + '.' + ext.appVersionCode.toString()[4..5]
75-
version = "0.3.0." + ext.baseVersion.replaceAll("\\.", "")
75+
version = "0.3.1." + ext.baseVersion.replaceAll("\\.", "")
7676
ext.isReleaseVersion = true
7777
}
7878

play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import android.util.Log;
2828

2929
import androidx.annotation.Nullable;
30+
import com.google.android.gms.common.BuildConfig;
3031
import org.microg.gms.utils.ExtendedPackageInfo;
3132

3233
import java.lang.reflect.Method;
@@ -60,7 +61,7 @@ public static boolean isGooglePackage(Context context, String packageName) {
6061
*/
6162
@Deprecated
6263
public static boolean callerHasExtendedAccessPermission(Context context) {
63-
return context.checkCallingPermission("org.microg.gms.EXTENDED_ACCESS") == PackageManager.PERMISSION_GRANTED;
64+
return context.checkCallingPermission(BuildConfig.BASE_PACKAGE_NAME + ".microg.gms.EXTENDED_ACCESS") == PackageManager.PERMISSION_GRANTED;
6465
}
6566

6667
public static void assertGooglePackagePermission(Context context, GooglePackagePermission permission) {
@@ -80,6 +81,11 @@ public static boolean callerHasGooglePackagePermission(Context context, GooglePa
8081
packageCandidate
8182
);
8283

84+
// See https://github.com/ReVanced/GmsCore/issues/10.
85+
ExtendedPackageInfo extendedPackageInfo = new ExtendedPackageInfo(context, packageName);
86+
if (!extendedPackageInfo.isInstalled())
87+
return true;
88+
8389
if (new ExtendedPackageInfo(context, packageName).hasGooglePackagePermission(permission)) {
8490
return true;
8591
}
@@ -240,7 +246,7 @@ public static String getAndCheckPackage(Context context, String suggestedPackage
240246
if (packageName != null && suggestedPackageName != null && !packageName.equals(suggestedPackageName)) {
241247
throw new SecurityException("UID [" + callingUid + "] is not related to packageName [" + suggestedPackageName + "] (seems to be " + packageName + ")");
242248
}
243-
return PackageSpoofUtils.spoofPackageName(context.getPackageManager(), packageName);
249+
return packageName;
244250
}
245251

246252
@Nullable

play-services-base/core/src/main/kotlin/org/microg/gms/common/PackageSpoofUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import java.util.*
1010
/**
1111
* Utilities to spoof package information.
1212
*/
13-
internal object PackageSpoofUtils {
13+
object PackageSpoofUtils {
1414
private const val TAG = "SpoofUtils"
1515
private const val META_SPOOF_PACKAGE_NAME =
1616
BuildConfig.BASE_PACKAGE_NAME + ".android.gms.SPOOFED_PACKAGE_NAME"

play-services-base/src/main/java/org/microg/gms/common/MultiConnectionKeeper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import android.content.pm.ResolveInfo;
2828
import android.os.IBinder;
2929
import android.util.Log;
30+
import com.google.android.gms.base.BuildConfig;
3031

3132
import java.util.HashMap;
3233
import java.util.HashSet;
@@ -179,7 +180,7 @@ public boolean isMicrog(ResolveInfo resolveInfo) {
179180
if (resolveInfo == null || resolveInfo.serviceInfo == null) return false;
180181
if (resolveInfo.serviceInfo.name.startsWith("org.microg.")) return true;
181182
try {
182-
PermissionInfo info = context.getPackageManager().getPermissionInfo("org.microg.gms.EXTENDED_ACCESS", 0);
183+
PermissionInfo info = context.getPackageManager().getPermissionInfo(BuildConfig.BASE_PACKAGE_NAME + ".microg.gms.EXTENDED_ACCESS", 0);
183184
return info.packageName.equals(resolveInfo.serviceInfo.packageName);
184185
} catch (PackageManager.NameNotFoundException e) {
185186
return false;

play-services-core/src/main/AndroidManifest.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,15 @@
6262
android:protectionLevel="dangerous" />
6363

6464
<permission
65-
android:name="org.microg.gms.STATUS_BROADCAST"
65+
android:name="${basePackageName}.microg.gms.STATUS_BROADCAST"
6666
android:label="@string/perm_status_broadcast_label"
6767
android:protectionLevel="normal" />
6868
<permission
69-
android:name="org.microg.gms.EXTENDED_ACCESS"
69+
android:name="${basePackageName}.microg.gms.EXTENDED_ACCESS"
7070
android:label="@string/perm_extended_access_label"
7171
android:protectionLevel="dangerous" />
7272
<permission
73-
android:name="org.microg.gms.PROVISION"
73+
android:name="${basePackageName}.microg.gms.PROVISION"
7474
android:description="@string/perm_provision_description"
7575
android:label="@string/perm_provision_label"
7676
android:protectionLevel="privileged|signature" />
@@ -98,7 +98,7 @@
9898
<uses-permission android:name="${basePackageName}.android.c2dm.permission.RECEIVE" />
9999
<uses-permission android:name="${basePackageName}.android.c2dm.permission.SEND" />
100100

101-
<uses-permission android:name="org.microg.gms.STATUS_BROADCAST" />
101+
<uses-permission android:name="${basePackageName}.microg.gms.STATUS_BROADCAST" />
102102

103103
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
104104
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
@@ -128,7 +128,7 @@
128128
<service
129129
android:name="org.microg.gms.provision.ProvisionService"
130130
android:exported="true"
131-
android:permission="org.microg.gms.PROVISION" />
131+
android:permission="${basePackageName}.microg.gms.PROVISION" />
132132

133133
<!-- Services Framework -->
134134

play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import androidx.annotation.RequiresPermission;
1717
import com.google.android.gms.base.BuildConfig;
18+
import org.microg.gms.common.PackageSpoofUtils;
1819
import org.microg.gms.common.PackageUtils;
1920
import org.microg.gms.settings.SettingsContract;
2021

@@ -269,7 +270,10 @@ public AuthResponse requestAuth(boolean legacy) throws IOException {
269270
}
270271
AuthRequest request = new AuthRequest().fromContext(context)
271272
.source("android")
272-
.app(packageName, getPackageSignature())
273+
.app(
274+
PackageSpoofUtils.spoofPackageName(context.getPackageManager(), packageName),
275+
PackageSpoofUtils.spoofStringSignature(context.getPackageManager(), packageName, getPackageSignature())
276+
)
273277
.email(accountName)
274278
.token(getAccountManager().getPassword(account))
275279
.service(service)

play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.microg.gms.auth.AuthManager;
3535
import org.microg.gms.auth.AuthResponse;
3636
import org.microg.gms.auth.login.LoginActivity;
37+
import org.microg.gms.common.PackageSpoofUtils;
3738
import org.microg.gms.common.PackageUtils;
3839

3940
import java.util.Arrays;
@@ -107,7 +108,7 @@ public Bundle getAuthToken(AccountAuthenticatorResponse response, Account accoun
107108
Intent i = new Intent(context, AskPermissionActivity.class);
108109
i.putExtras(options);
109110
i.putExtra(KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
110-
i.putExtra(KEY_ANDROID_PACKAGE_NAME, app);
111+
i.putExtra(KEY_ANDROID_PACKAGE_NAME, PackageSpoofUtils.spoofPackageName(context.getPackageManager(), app));
111112
i.putExtra(KEY_ACCOUNT_TYPE, account.type);
112113
i.putExtra(KEY_ACCOUNT_NAME, account.name);
113114
i.putExtra(KEY_AUTHTOKEN, authTokenType);

0 commit comments

Comments
 (0)