From bc561eb06e0ac0f99f0a0589163bf8affc3516ae Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 11 May 2017 17:46:36 -0700 Subject: [PATCH] Don't print sensitive data on AssistStructure.dump() Test: manual verification Bug: 38205945 Change-Id: Ic184ee6da313a2c0f8e0dd11979f6985d8023140 --- core/java/android/app/assist/AssistStructure.java | 14 ++++++++------ .../java/com/android/server/autofill/Session.java | 4 ++-- .../test/voiceinteraction/AssistVisualizer.java | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java index eae9e1efbea7a..861c73d45284a 100644 --- a/core/java/android/app/assist/AssistStructure.java +++ b/core/java/android/app/assist/AssistStructure.java @@ -1936,7 +1936,7 @@ public class AssistStructure implements Parcelable { } /** @hide */ - public void dump() { + public void dump(boolean showSensitive) { if (mActivityComponent == null) { Log.i(TAG, "dump(): calling ensureData() first"); ensureData(); @@ -1949,11 +1949,11 @@ public class AssistStructure implements Parcelable { WindowNode node = getWindowNodeAt(i); Log.i(TAG, "Window #" + i + " [" + node.getLeft() + "," + node.getTop() + " " + node.getWidth() + "x" + node.getHeight() + "]" + " " + node.getTitle()); - dump(" ", node.getRootViewNode()); + dump(" ", node.getRootViewNode(), showSensitive); } } - void dump(String prefix, ViewNode node) { + void dump(String prefix, ViewNode node, boolean showSensitive) { Log.i(TAG, prefix + "View [" + node.getLeft() + "," + node.getTop() + " " + node.getWidth() + "x" + node.getHeight() + "]" + " " + node.getClassName()); int id = node.getId(); @@ -1992,12 +1992,15 @@ public class AssistStructure implements Parcelable { } CharSequence text = node.getText(); if (text != null) { + final String safeText = node.isSanitized() || showSensitive ? text.toString() + : "REDACTED[" + text.length() + " chars]"; Log.i(TAG, prefix + " Text (sel " + node.getTextSelectionStart() + "-" - + node.getTextSelectionEnd() + "): " + text); + + node.getTextSelectionEnd() + "): " + safeText); Log.i(TAG, prefix + " Text size: " + node.getTextSize() + " , style: #" + node.getTextStyle()); Log.i(TAG, prefix + " Text color fg: #" + Integer.toHexString(node.getTextColor()) + ", bg: #" + Integer.toHexString(node.getTextBackgroundColor())); + Log.i(TAG, prefix + " Input type: " + node.getInputType()); } String webDomain = node.getWebDomain(); if (webDomain != null) { @@ -2031,7 +2034,6 @@ public class AssistStructure implements Parcelable { Log.i(TAG, prefix + "Autofill info: id= " + autofillId + ", type=" + node.getAutofillType() + ", options=" + Arrays.toString(node.getAutofillOptions()) - + ", inputType=" + node.getInputType() + ", hints=" + Arrays.toString(node.getAutofillHints()) + ", value=" + node.getAutofillValue() + ", sanitized=" + node.isSanitized()); @@ -2043,7 +2045,7 @@ public class AssistStructure implements Parcelable { String cprefix = prefix + " "; for (int i=0; i