am 1056d5a9: am 75f304f9: Merge changes Ibfb5c6ab,I712919ae into lmp-mr1-dev

* commit '1056d5a997e3f30230e1e4316310586dd15a4600':
  Add mechanism for securely returning parameters though NativeDaemonConnector
  Revert "DO NOT MERGE: Don't log passwords returned from vdc"
This commit is contained in:
Paul Lawrence
2014-12-02 20:30:01 +00:00
committed by Android Git Automerger
2 changed files with 22 additions and 4 deletions

View File

@@ -174,6 +174,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
if (buffer[i] == 0) { if (buffer[i] == 0) {
// Note - do not log this raw message since it may contain
// sensitive data
final String rawEvent = new String( final String rawEvent = new String(
buffer, start, i - start, StandardCharsets.UTF_8); buffer, start, i - start, StandardCharsets.UTF_8);
@@ -181,6 +183,9 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
try { try {
final NativeDaemonEvent event = NativeDaemonEvent.parseRawEvent( final NativeDaemonEvent event = NativeDaemonEvent.parseRawEvent(
rawEvent); rawEvent);
log("RCV <- {" + event + "}");
if (event.isClassUnsolicited()) { if (event.isClassUnsolicited()) {
// TODO: migrate to sending NativeDaemonEvent instances // TODO: migrate to sending NativeDaemonEvent instances
if (mCallbacks.onCheckHoldWakeLock(event.getCode()) if (mCallbacks.onCheckHoldWakeLock(event.getCode())
@@ -196,6 +201,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
mResponseQueue.add(event.getCmdNumber(), event); mResponseQueue.add(event.getCmdNumber(), event);
} }
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
log("Problem parsing message " + e);
} finally { } finally {
if (releaseWl) { if (releaseWl) {
mWakeLock.acquire(); mWakeLock.acquire();
@@ -205,8 +211,9 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
start = i + 1; start = i + 1;
} }
} }
if (start == 0) { if (start == 0) {
final String rawEvent = new String(buffer, start, count, StandardCharsets.UTF_8); log("RCV incomplete");
} }
// We should end at the amount we read. If not, compact then // We should end at the amount we read. If not, compact then

View File

@@ -33,16 +33,21 @@ public class NativeDaemonEvent {
private final int mCode; private final int mCode;
private final String mMessage; private final String mMessage;
private final String mRawEvent; private final String mRawEvent;
private final String mLogMessage;
private String[] mParsed; private String[] mParsed;
private NativeDaemonEvent(int cmdNumber, int code, String message, String rawEvent) { private NativeDaemonEvent(int cmdNumber, int code, String message,
String rawEvent, String logMessage) {
mCmdNumber = cmdNumber; mCmdNumber = cmdNumber;
mCode = code; mCode = code;
mMessage = message; mMessage = message;
mRawEvent = rawEvent; mRawEvent = rawEvent;
mLogMessage = logMessage;
mParsed = null; mParsed = null;
} }
static public final String SENSITIVE_MARKER = "{{sensitive}}";
public int getCmdNumber() { public int getCmdNumber() {
return mCmdNumber; return mCmdNumber;
} }
@@ -62,7 +67,7 @@ public class NativeDaemonEvent {
@Override @Override
public String toString() { public String toString() {
return mRawEvent; return mLogMessage;
} }
/** /**
@@ -151,9 +156,15 @@ public class NativeDaemonEvent {
} }
} }
String logMessage = rawEvent;
if (parsed.length > 2 && parsed[2].equals(SENSITIVE_MARKER)) {
skiplength += parsed[2].length() + 1;
logMessage = parsed[0] + " " + parsed[1] + " {}";
}
final String message = rawEvent.substring(skiplength); final String message = rawEvent.substring(skiplength);
return new NativeDaemonEvent(cmdNumber, code, message, rawEvent); return new NativeDaemonEvent(cmdNumber, code, message, rawEvent, logMessage);
} }
/** /**