Skip to content

Commit f5d70fd

Browse files
jsharkeyAndroid (Google) Code Review
authored andcommitted
Merge "Protect system services with DUMP permission." into jb-dev
2 parents d52e0c7 + eb4cc49 commit f5d70fd

File tree

9 files changed

+19
-19
lines changed

9 files changed

+19
-19
lines changed

core/java/android/server/BluetoothA2dpService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,8 @@ private void onConnectSinkResult(String deviceObjectPath, boolean result) {
588588

589589
@Override
590590
protected synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
591+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
592+
591593
if (mAudioDevices.isEmpty()) return;
592594
pw.println("Cached audio devices:");
593595
for (BluetoothDevice device : mAudioDevices.keySet()) {

core/java/android/server/BluetoothService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,6 +1775,8 @@ private void registerForAirplaneMode(IntentFilter filter) {
17751775

17761776
@Override
17771777
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1778+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
1779+
17781780
if (getBluetoothStateInternal() != BluetoothAdapter.STATE_ON) {
17791781
return;
17801782
}

core/java/android/service/dreams/DreamManagerService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ public void onServiceDisconnected(ComponentName name) {
169169

170170
@Override
171171
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
172+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
173+
172174
pw.println("Dreamland:");
173175
pw.print(" component="); pw.println(mCurrentDreamComponent);
174176
pw.print(" token="); pw.println(mCurrentDreamToken);

media/java/android/media/AudioService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4232,6 +4232,8 @@ public void remoteControlDisplayUsesBitmapSize(IRemoteControlDisplay rcd, int w,
42324232

42334233
@Override
42344234
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
4235+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
4236+
42354237
// TODO probably a lot more to do here than just the audio focus and remote control stacks
42364238
dumpFocusStack(pw);
42374239
dumpRCStack(pw);

packages/SystemUI/src/com/android/systemui/SystemUIService.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,6 @@ public IBinder onBind(Intent intent) {
111111

112112
@Override
113113
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
114-
if (checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
115-
!= PackageManager.PERMISSION_GRANTED) {
116-
pw.println("Permission Denial: can't dump StatusBar from from pid="
117-
+ Binder.getCallingPid()
118-
+ ", uid=" + Binder.getCallingUid());
119-
return;
120-
}
121-
122114
if (args == null || args.length == 0) {
123115
for (SystemUI ui: mServices) {
124116
pw.println("dumping service: " + ui.getClass().getName());

services/java/com/android/server/BackupManagerService.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5714,6 +5714,8 @@ public synchronized void endRestoreSession() {
57145714

57155715
@Override
57165716
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
5717+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
5718+
57175719
long identityToken = Binder.clearCallingIdentity();
57185720
try {
57195721
dumpInternal(pw);
@@ -5723,16 +5725,6 @@ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
57235725
}
57245726

57255727
private void dumpInternal(PrintWriter pw) {
5726-
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
5727-
!= PackageManager.PERMISSION_GRANTED) {
5728-
pw.println("Permission Denial: can't dump Backup Manager service from from pid="
5729-
+ Binder.getCallingPid()
5730-
+ ", uid=" + Binder.getCallingUid()
5731-
+ " without permission "
5732-
+ android.Manifest.permission.DUMP);
5733-
return;
5734-
}
5735-
57365728
synchronized (mQueueLock) {
57375729
pw.println("Backup Manager is " + (mEnabled ? "enabled" : "disabled")
57385730
+ " / " + (!mProvisioned ? "not " : "") + "provisioned / "

services/java/com/android/server/CountryDetectorService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ boolean isSystemReady() {
212212
@SuppressWarnings("unused")
213213
@Override
214214
protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) {
215+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
216+
215217
if (!DEBUG) return;
216218
try {
217219
final Printer p = new PrintWriterPrinter(fout);

services/java/com/android/server/DiskStatsService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
* statistics about the status of the disk.
3535
*/
3636
public class DiskStatsService extends Binder {
37+
private static final String TAG = "DiskStatsService";
38+
3739
private final Context mContext;
3840

3941
public DiskStatsService(Context context) {
@@ -42,7 +44,7 @@ public DiskStatsService(Context context) {
4244

4345
@Override
4446
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
45-
// This data is accessible to any app -- no permission check needed.
47+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
4648

4749
// Run a quick-and-dirty performance test: write 512 bytes
4850
byte[] junk = new byte[512];

services/java/com/android/server/SamplingProfilerService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ public class SamplingProfilerService extends Binder {
3939
private static final boolean LOCAL_LOGV = false;
4040
public static final String SNAPSHOT_DIR = SamplingProfilerIntegration.SNAPSHOT_DIR;
4141

42+
private final Context mContext;
4243
private FileObserver snapshotObserver;
4344

4445
public SamplingProfilerService(Context context) {
46+
mContext = context;
4547
registerSettingObserver(context);
4648
startWorking(context);
4749
}
@@ -94,6 +96,8 @@ private void registerSettingObserver(Context context) {
9496

9597
@Override
9698
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
99+
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
100+
97101
pw.println("SamplingProfilerService:");
98102
pw.println("Watching directory: " + SNAPSHOT_DIR);
99103
}

0 commit comments

Comments
 (0)