Fix side effects of trace-ipc and dumpheap commands

These shell commands were implicitly deleting any client-named file for
which the system uid had deletion capability.  They no longer do this,
instead using only the client's own capabilities and file manipulation
modes.

Bug: 185398942
Test: manual "adb shell cmd activity dumpheap system_server /data/system/last-fstrim"
Test: atest CtsPermissionTestCases:ShellCommandPermissionTest
Merged-In: Ie61ab2c3f4bfbd04de09ca99c1116d1129461e8f
Change-Id: Ie61ab2c3f4bfbd04de09ca99c1116d1129461e8f
This commit is contained in:
Christopher Tate
2021-06-07 15:02:45 -07:00
committed by Chris Tate
parent 1692babe5e
commit 6984eaa9f4

View File

@@ -60,7 +60,6 @@ import com.android.internal.util.HexDump;
import com.android.internal.util.Preconditions; import com.android.internal.util.Preconditions;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@@ -660,8 +659,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
return -1; return -1;
} }
File file = new File(filename); // Writes an error message to stderr on failure
file.delete();
ParcelFileDescriptor fd = openOutputFileForSystem(filename); ParcelFileDescriptor fd = openOutputFileForSystem(filename);
if (fd == null) { if (fd == null) {
return -1; return -1;
@@ -812,8 +810,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
String process = getNextArgRequired(); String process = getNextArgRequired();
String heapFile = getNextArgRequired(); String heapFile = getNextArgRequired();
File file = new File(heapFile); // Writes an error message to stderr on failure
file.delete();
ParcelFileDescriptor fd = openOutputFileForSystem(heapFile); ParcelFileDescriptor fd = openOutputFileForSystem(heapFile);
if (fd == null) { if (fd == null) {
return -1; return -1;