mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-14 10:24:32 -05:00
59bf3b75c7
https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/353117 https://review.lineageos.org/q/topic:Q_asb_2023-03 https://review.lineageos.org/q/topic:Q_asb_2023-04 https://review.lineageos.org/q/topic:Q_asb_2023-05 https://review.lineageos.org/q/topic:Q_asb_2023-06 https://review.lineageos.org/q/topic:Q_asb_2023-07 https://review.lineageos.org/q/topic:Q_asb_2023-08 accounted for via patches: https://review.lineageos.org/c/LineageOS/android_system_ca-certificates/+/376560 https://review.lineageos.org/c/LineageOS/android_system_ca-certificates/+/376561 https://review.lineageos.org/c/LineageOS/android_system_ca-certificates/+/376562 https://review.lineageos.org/q/topic:Q_asb_2023-09 https://review.lineageos.org/q/topic:Q_asb_2023-10 https://review.lineageos.org/q/topic:Q_asb_2023-11 accounted for via patches: https://review.lineageos.org/c/LineageOS/android_system_ca-certificates/+/376563 accounted for via manifest change: https://review.lineageos.org/c/LineageOS/android_external_webp/+/376568 https://review.lineageos.org/q/topic:Q_asb_2023-12 https://review.lineageos.org/q/topic:Q_asb_2024-01 https://review.lineageos.org/q/topic:Q_asb_2024-02 https://review.lineageos.org/q/topic:Q_asb_2024-03 Signed-off-by: Tavi <tavi@divested.dev>
154 lines
7.3 KiB
Diff
154 lines
7.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Tyler Gunn <tgunn@google.com>
|
|
Date: Mon, 27 Jan 2020 10:32:08 -0800
|
|
Subject: [PATCH] Support for API cleanups.
|
|
|
|
New @SystemApis on Conference and PhoneAccount were missing the required
|
|
permissions annotations; add permission enforcement in Telecom.
|
|
Renames for various methods/properties in the API surface.
|
|
|
|
Test: Run Telecom and Telephony CTS tests.
|
|
Test: Run Telephony unit tests.
|
|
Test: Perform manual single-party-conference regression test to confirm
|
|
that conference behavior does not regress.
|
|
Bug: 148286830
|
|
Bug: 148284863
|
|
Bug: 148284843
|
|
Bug: 148287068
|
|
Bug: 148285484
|
|
Bug: 148285560
|
|
Change-Id: I1f446d81859fa109d74af3661a42a0bd224de5aa
|
|
---
|
|
.../telecom/ConnectionServiceWrapper.java | 49 +++++++++++++++++++
|
|
.../server/telecom/TelecomServiceImpl.java | 12 +++++
|
|
2 files changed, 61 insertions(+)
|
|
|
|
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
|
|
index d06460784..bd5e37f89 100644
|
|
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
|
|
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
|
|
@@ -16,9 +16,12 @@
|
|
|
|
package com.android.server.telecom;
|
|
|
|
+import static android.Manifest.permission.MODIFY_PHONE_STATE;
|
|
+
|
|
import android.app.AppOpsManager;
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
+import android.content.pm.PackageManager;
|
|
import android.graphics.drawable.Icon;
|
|
import android.net.Uri;
|
|
import android.os.Binder;
|
|
@@ -444,6 +447,29 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
|
|
Session.Info sessionInfo) {
|
|
Log.startSession(sessionInfo, LogUtils.Sessions.CSW_ADD_CONFERENCE_CALL);
|
|
|
|
+ if (parcelableConference.getConnectElapsedTimeMillis() != 0
|
|
+ && mContext.checkCallingOrSelfPermission(MODIFY_PHONE_STATE)
|
|
+ != PackageManager.PERMISSION_GRANTED) {
|
|
+ Log.w(this, "addConferenceCall from caller without permission!");
|
|
+ parcelableConference = new ParcelableConference(
|
|
+ parcelableConference.getPhoneAccount(),
|
|
+ parcelableConference.getState(),
|
|
+ parcelableConference.getConnectionCapabilities(),
|
|
+ parcelableConference.getConnectionProperties(),
|
|
+ parcelableConference.getConnectionIds(),
|
|
+ parcelableConference.getVideoProvider(),
|
|
+ parcelableConference.getVideoState(),
|
|
+ 0 /* connectTimeMillis */,
|
|
+ 0 /* connectElapsedRealTime */,
|
|
+ parcelableConference.getStatusHints(),
|
|
+ parcelableConference.getExtras(),
|
|
+ parcelableConference.getHandle(),
|
|
+ parcelableConference.getHandlePresentation(),
|
|
+ "" /* callerDisplayName */,
|
|
+ TelecomManager.PRESENTATION_UNKNOWN /* callerDisplayNamePresentation */
|
|
+ );
|
|
+ }
|
|
+
|
|
UserHandle callingUserHandle = Binder.getCallingUserHandle();
|
|
// Check status hints image for cross user access
|
|
if (parcelableConference.getStatusHints() != null) {
|
|
@@ -746,6 +772,13 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
|
|
public void setAddress(String callId, Uri address, int presentation,
|
|
Session.Info sessionInfo) {
|
|
Log.startSession(sessionInfo, "CSW.sA");
|
|
+
|
|
+ if (mContext.checkCallingOrSelfPermission(MODIFY_PHONE_STATE)
|
|
+ != PackageManager.PERMISSION_GRANTED) {
|
|
+ Log.w(this, "setAddress from caller without permission.");
|
|
+ return;
|
|
+ }
|
|
+
|
|
long token = Binder.clearCallingIdentity();
|
|
try {
|
|
synchronized (mLock) {
|
|
@@ -830,6 +863,13 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
|
|
mAppOpsManager.checkPackage(Binder.getCallingUid(),
|
|
callingPhoneAccountHandle.getComponentName().getPackageName());
|
|
}
|
|
+
|
|
+ if (mContext.checkCallingOrSelfPermission(MODIFY_PHONE_STATE)
|
|
+ != PackageManager.PERMISSION_GRANTED) {
|
|
+ Log.w(this, "addExistingConnection from caller without permission!");
|
|
+ return;
|
|
+ }
|
|
+
|
|
long token = Binder.clearCallingIdentity();
|
|
try {
|
|
synchronized (mLock) {
|
|
@@ -1037,6 +1077,13 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
|
|
public void setConferenceState(String callId, boolean isConference,
|
|
Session.Info sessionInfo) throws RemoteException {
|
|
Log.startSession(sessionInfo, "CSW.sCS");
|
|
+
|
|
+ if (mContext.checkCallingOrSelfPermission(MODIFY_PHONE_STATE)
|
|
+ != PackageManager.PERMISSION_GRANTED) {
|
|
+ Log.w(this, "setConferenceState from caller without permission.");
|
|
+ return;
|
|
+ }
|
|
+
|
|
long token = Binder.clearCallingIdentity();
|
|
try {
|
|
synchronized (mLock) {
|
|
@@ -1065,6 +1112,7 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
|
|
private final PhoneAccountRegistrar mPhoneAccountRegistrar;
|
|
private final CallsManager mCallsManager;
|
|
private final AppOpsManager mAppOpsManager;
|
|
+ private final Context mContext;
|
|
|
|
private ConnectionServiceFocusManager.ConnectionServiceFocusListener mConnSvrFocusListener;
|
|
|
|
@@ -1095,6 +1143,7 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
|
|
mPhoneAccountRegistrar = phoneAccountRegistrar;
|
|
mCallsManager = callsManager;
|
|
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
|
+ mContext = context;
|
|
}
|
|
|
|
/** See {@link IConnectionService#addConnectionServiceAdapter}. */
|
|
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
|
|
index 8c498fc55..f784fa59c 100644
|
|
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
|
|
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
|
|
@@ -513,6 +513,18 @@ public class TelecomServiceImpl {
|
|
if (callingUid != Process.SHELL_UID) {
|
|
enforceUserHandleMatchesCaller(account.getAccountHandle());
|
|
}
|
|
+
|
|
+ if (TextUtils.isEmpty(account.getGroupId())
|
|
+ && mContext.checkCallingOrSelfPermission(MODIFY_PHONE_STATE)
|
|
+ != PackageManager.PERMISSION_GRANTED) {
|
|
+ Log.w(this, "registerPhoneAccount - attempt to set a"
|
|
+ + " group from a non-system caller.");
|
|
+ // Not permitted to set group, so null it out.
|
|
+ account = new PhoneAccount.Builder(account)
|
|
+ .setGroupId(null)
|
|
+ .build();
|
|
+ }
|
|
+
|
|
final long token = Binder.clearCallingIdentity();
|
|
try {
|
|
mPhoneAccountRegistrar.registerPhoneAccount(account);
|