Reimplement DumpUtils#checkDumpPermission() in ConnectivityService

ConnectivityService is going to be a part of mainline module, to
prevent using @hide method in ConnectivityService, reimplement
DumpUtils#checkDumpPermission() in ConnectivityService.

Bug: 175177794
Test: atest FrameworksNetTests
Test: adb shell dumpsys connectivity
Change-Id: I1e4bc023b39b40a717a3a0fd8cd60aa2f25e9bdb
This commit is contained in:
lucaslin
2020-12-10 15:10:54 +08:00
committed by Lucas Lin
parent db56932b84
commit 99473f6489

View File

@@ -186,7 +186,6 @@ import com.android.internal.net.VpnInfo;
import com.android.internal.net.VpnProfile; import com.android.internal.net.VpnProfile;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.AsyncChannel; import com.android.internal.util.AsyncChannel;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.LocationPermissionChecker; import com.android.internal.util.LocationPermissionChecker;
import com.android.internal.util.MessageUtils; import com.android.internal.util.MessageUtils;
@@ -2525,9 +2524,21 @@ public class ConnectivityService extends IConnectivityManager.Stub
PriorityDump.dump(mPriorityDumper, fd, writer, args); PriorityDump.dump(mPriorityDumper, fd, writer, args);
} }
private boolean checkDumpPermission(Context context, String tag, PrintWriter pw) {
if (context.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
!= PackageManager.PERMISSION_GRANTED) {
pw.println("Permission Denial: can't dump " + tag + " from from pid="
+ Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()
+ " due to missing android.permission.DUMP permission");
return false;
} else {
return true;
}
}
private void doDump(FileDescriptor fd, PrintWriter writer, String[] args, boolean asProto) { private void doDump(FileDescriptor fd, PrintWriter writer, String[] args, boolean asProto) {
final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " "); final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; if (!checkDumpPermission(mContext, TAG, pw)) return;
if (asProto) return; if (asProto) return;
if (ArrayUtils.contains(args, DIAG_ARG)) { if (ArrayUtils.contains(args, DIAG_ARG)) {