resolve merge conflicts of b4a5615 to lmp-dev am: 288166cbb2 am: b7f8b59e24 am: 41a0dd41f1 am: af369f6e66 am: d610363a48 am: 0777ad8253

am: 187d841b75

Change-Id: I063f0cd3f53be4d58d123d05da7171a47014929d
This commit is contained in:
David Christie
2016-08-24 22:43:09 +00:00
committed by android-build-merger

View File

@@ -538,6 +538,15 @@ public class Process {
ZygoteState zygoteState, ArrayList<String> args) ZygoteState zygoteState, ArrayList<String> args)
throws ZygoteStartFailedEx { throws ZygoteStartFailedEx {
try { try {
// Throw early if any of the arguments are malformed. This means we can
// avoid writing a partial response to the zygote.
int sz = args.size();
for (int i = 0; i < sz; i++) {
if (args.get(i).indexOf('\n') >= 0) {
throw new ZygoteStartFailedEx("embedded newlines not allowed");
}
}
/** /**
* See com.android.internal.os.ZygoteInit.readArgumentList() * See com.android.internal.os.ZygoteInit.readArgumentList()
* Presently the wire format to the zygote process is: * Presently the wire format to the zygote process is:
@@ -554,13 +563,8 @@ public class Process {
writer.write(Integer.toString(args.size())); writer.write(Integer.toString(args.size()));
writer.newLine(); writer.newLine();
int sz = args.size();
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
String arg = args.get(i); String arg = args.get(i);
if (arg.indexOf('\n') >= 0) {
throw new ZygoteStartFailedEx(
"embedded newlines not allowed");
}
writer.write(arg); writer.write(arg);
writer.newLine(); writer.newLine();
} }
@@ -569,11 +573,16 @@ public class Process {
// Should there be a timeout on this? // Should there be a timeout on this?
ProcessStartResult result = new ProcessStartResult(); ProcessStartResult result = new ProcessStartResult();
// Always read the entire result from the input stream to avoid leaving
// bytes in the stream for future process starts to accidentally stumble
// upon.
result.pid = inputStream.readInt(); result.pid = inputStream.readInt();
result.usingWrapper = inputStream.readBoolean();
if (result.pid < 0) { if (result.pid < 0) {
throw new ZygoteStartFailedEx("fork() failed"); throw new ZygoteStartFailedEx("fork() failed");
} }
result.usingWrapper = inputStream.readBoolean();
return result; return result;
} catch (IOException ex) { } catch (IOException ex) {
zygoteState.close(); zygoteState.close();