diff options
| author | 2019-01-15 09:34:05 -0800 | |
|---|---|---|
| committer | 2019-01-15 10:21:19 -0800 | |
| commit | decc5ba2ac4e3e6788b19f49be409ee37175b3d9 (patch) | |
| tree | 11292ff5170ea2831447ad1506b7b9ac84ca61bc | |
| parent | 94ae766a983bdaf5f31493f7aa604b4735725830 (diff) | |
Don't log account name on logcat
Test: manual test
- dumpsys content still shows accounts
- logcat doesn't show account names after "adb shell requestsync"
Bug: 121987496
Change-Id: Ic4b8448d10936c9368b1aab208ae7d8e78c3a1ae
4 files changed, 74 insertions, 30 deletions
diff --git a/services/core/java/com/android/server/content/SyncLogger.java b/services/core/java/com/android/server/content/SyncLogger.java index 5cbe5b958b7d..fc20ef20f63d 100644 --- a/services/core/java/com/android/server/content/SyncLogger.java +++ b/services/core/java/com/android/server/content/SyncLogger.java @@ -16,6 +16,7 @@ package com.android.server.content; +import android.accounts.Account; import android.app.job.JobParameters; import android.os.Build; import android.os.Environment; @@ -31,6 +32,8 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IntPair; import com.android.server.IoThread; +import com.android.server.content.SyncManager.ActiveSyncContext; +import com.android.server.content.SyncStorageEngine.EndPoint; import libcore.io.IoUtils; @@ -309,4 +312,20 @@ public class SyncLogger { } } } + + static String logSafe(Account account) { + return account == null ? "[null]" : account.toSafeString(); + } + + static String logSafe(EndPoint endPoint) { + return endPoint == null ? "[null]" : endPoint.toSafeString(); + } + + static String logSafe(SyncOperation operation) { + return operation == null ? "[null]" : operation.toSafeString(); + } + + static String logSafe(ActiveSyncContext asc) { + return asc == null ? "[null]" : asc.toSafeString(); + } } diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index 8b93e041fa4c..7096477ce5f4 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -16,6 +16,8 @@ package com.android.server.content; +import static com.android.server.content.SyncLogger.logSafe; + import android.accounts.Account; import android.accounts.AccountAndUser; import android.accounts.AccountManager; @@ -1140,7 +1142,7 @@ public class SyncManager { /* ignore - local call */ } if (checkAccountAccess && !canAccessAccount(account, owningPackage, owningUid)) { - Log.w(TAG, "Access to " + account + " denied for package " + Log.w(TAG, "Access to " + logSafe(account) + " denied for package " + owningPackage + " in UID " + syncAdapterInfo.uid); return AuthorityInfo.SYNCABLE_NO_ACCOUNT_ACCESS; } @@ -1474,7 +1476,8 @@ public class SyncManager { if (!syncOperation.ignoreBackoff()) { Pair<Long, Long> backoff = mSyncStorageEngine.getBackoff(syncOperation.target); if (backoff == null) { - Slog.e(TAG, "Couldn't find backoff values for " + syncOperation.target); + Slog.e(TAG, "Couldn't find backoff values for " + + logSafe(syncOperation.target)); backoff = new Pair<Long, Long>(SyncStorageEngine.NOT_IN_BACKOFF_MODE, SyncStorageEngine.NOT_IN_BACKOFF_MODE); } @@ -1745,8 +1748,8 @@ public class SyncManager { scheduleSyncOperationH(operation); } else { // Otherwise do not reschedule. - Log.d(TAG, "not retrying sync operation because the error is a hard error: " - + operation); + Log.e(TAG, "not retrying sync operation because the error is a hard error: " + + logSafe(operation)); } } @@ -1881,11 +1884,12 @@ public class SyncManager { sendSyncFinishedOrCanceledMessage(this, result); } - public void toString(StringBuilder sb) { + public void toString(StringBuilder sb, boolean logSafe) { sb.append("startTime ").append(mStartTime) .append(", mTimeoutStartTime ").append(mTimeoutStartTime) .append(", mHistoryRowId ").append(mHistoryRowId) - .append(", syncOperation ").append(mSyncOperation); + .append(", syncOperation ").append( + logSafe ? logSafe(mSyncOperation) : mSyncOperation); } public void onServiceConnected(ComponentName name, IBinder service) { @@ -1947,7 +1951,13 @@ public class SyncManager { public String toString() { StringBuilder sb = new StringBuilder(); - toString(sb); + toString(sb, false); + return sb.toString(); + } + + public String toSafeString() { + StringBuilder sb = new StringBuilder(); + toString(sb, true); return sb.toString(); } @@ -2036,7 +2046,7 @@ public class SyncManager { int count = 0; for (SyncOperation op: pendingSyncs) { if (!op.isPeriodic) { - pw.println(op.dump(null, false, buckets)); + pw.println(op.dump(null, false, buckets, /*logSafe=*/ false)); count++; } } @@ -2053,7 +2063,7 @@ public class SyncManager { int count = 0; for (SyncOperation op: pendingSyncs) { if (op.isPeriodic) { - pw.println(op.dump(null, false, buckets)); + pw.println(op.dump(null, false, buckets, /*logSafe=*/ false)); count++; } } @@ -2186,7 +2196,7 @@ public class SyncManager { sb.setLength(0); pw.print(formatDurationHMS(sb, durationInSeconds)); pw.print(" - "); - pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets)); + pw.print(activeSyncContext.mSyncOperation.dump(pm, false, buckets, /*logSafe=*/ false)); pw.println(); } pw.println(); @@ -2974,7 +2984,7 @@ public class SyncManager { case SyncHandler.MESSAGE_CANCEL: SyncStorageEngine.EndPoint endpoint = (SyncStorageEngine.EndPoint) msg.obj; Bundle extras = msg.peekData(); - if (Log.isLoggable(TAG, Log.DEBUG)) { + if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_CANCEL: " + endpoint + " bundle: " + extras); } @@ -2985,9 +2995,11 @@ public class SyncManager { SyncFinishedOrCancelledMessagePayload payload = (SyncFinishedOrCancelledMessagePayload) msg.obj; if (!isSyncStillActiveH(payload.activeSyncContext)) { - Log.d(TAG, "handleSyncHandlerMessage: dropping since the " - + "sync is no longer active: " - + payload.activeSyncContext); + if (isLoggable) { + Log.d(TAG, "handleSyncHandlerMessage: dropping since the " + + "sync is no longer active: " + + payload.activeSyncContext); + } break; } if (isLoggable) { @@ -3002,7 +3014,7 @@ public class SyncManager { case SyncHandler.MESSAGE_SERVICE_CONNECTED: { ServiceConnectionData msgData = (ServiceConnectionData) msg.obj; - if (Log.isLoggable(TAG, Log.VERBOSE)) { + if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_CONNECTED: " + msgData.activeSyncContext); } @@ -3018,7 +3030,7 @@ public class SyncManager { case SyncHandler.MESSAGE_SERVICE_DISCONNECTED: { final ActiveSyncContext currentSyncContext = ((ServiceConnectionData) msg.obj).activeSyncContext; - if (Log.isLoggable(TAG, Log.VERBOSE)) { + if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_SERVICE_DISCONNECTED: " + currentSyncContext); } @@ -3053,7 +3065,7 @@ public class SyncManager { case SyncHandler.MESSAGE_MONITOR_SYNC: ActiveSyncContext monitoredSyncContext = (ActiveSyncContext) msg.obj; - if (Log.isLoggable(TAG, Log.DEBUG)) { + if (isLoggable) { Log.d(TAG, "handleSyncHandlerMessage: MESSAGE_MONITOR_SYNC: " + monitoredSyncContext.mSyncOperation.target); } @@ -3061,7 +3073,7 @@ public class SyncManager { if (isSyncNotUsingNetworkH(monitoredSyncContext)) { Log.w(TAG, String.format( "Detected sync making no progress for %s. cancelling.", - monitoredSyncContext)); + logSafe(monitoredSyncContext))); SyncJobService.callJobFinished( monitoredSyncContext.mSyncOperation.jobId, false, "no network activity"); @@ -3558,7 +3570,8 @@ public class SyncManager { } catch (RuntimeException exc) { mLogger.log("Sync failed with RuntimeException: ", exc.toString()); closeActiveSyncContext(activeSyncContext); - Slog.e(TAG, "Caught RuntimeException while starting the sync " + syncOperation, exc); + Slog.e(TAG, "Caught RuntimeException while starting the sync " + + logSafe(syncOperation), exc); } } @@ -3658,7 +3671,8 @@ public class SyncManager { reschedulePeriodicSyncH(syncOperation); } } else { - Log.w(TAG, "failed sync operation " + syncOperation + ", " + syncResult); + Log.w(TAG, "failed sync operation " + + logSafe(syncOperation) + ", " + syncResult); syncOperation.retries++; if (syncOperation.retries > mConstants.getMaxRetriesWithAppStandbyExemption()) { @@ -4042,11 +4056,6 @@ public class SyncManager { getJobScheduler().cancel(op.jobId); } - private void wtfWithLog(String message) { - Slog.wtf(TAG, message); - mLogger.log("WTF: ", message); - } - public void resetTodayStats() { mSyncStorageEngine.resetTodayStats(/*force=*/ true); } diff --git a/services/core/java/com/android/server/content/SyncOperation.java b/services/core/java/com/android/server/content/SyncOperation.java index 25edf4070689..2abc2e60a47b 100644 --- a/services/core/java/com/android/server/content/SyncOperation.java +++ b/services/core/java/com/android/server/content/SyncOperation.java @@ -363,14 +363,19 @@ public class SyncOperation { @Override public String toString() { - return dump(null, true, null); + return dump(null, true, null, false); } - String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates) { + public String toSafeString() { + return dump(null, true, null, true); + } + + String dump(PackageManager pm, boolean shorter, SyncAdapterStateFetcher appStates, + boolean logSafe) { StringBuilder sb = new StringBuilder(); sb.append("JobId=").append(jobId) .append(" ") - .append(target.account.name) + .append(logSafe ? "***" : target.account.name) .append("/") .append(target.account.type) .append(" u") diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java index bfd179141554..6b441a0d0f30 100644 --- a/services/core/java/com/android/server/content/SyncStorageEngine.java +++ b/services/core/java/com/android/server/content/SyncStorageEngine.java @@ -16,6 +16,8 @@ package com.android.server.content; +import static com.android.server.content.SyncLogger.logSafe; + import android.accounts.Account; import android.accounts.AccountAndUser; import android.accounts.AccountManager; @@ -225,6 +227,15 @@ public class SyncStorageEngine { sb.append(":u" + userId); return sb.toString(); } + + public String toSafeString() { + StringBuilder sb = new StringBuilder(); + sb.append(account == null ? "ALL ACCS" : logSafe(account)) + .append("/") + .append(provider == null ? "ALL PDRS" : provider); + sb.append(":u" + userId); + return sb.toString(); + } } public static class AuthorityInfo { @@ -1861,8 +1872,8 @@ public class SyncStorageEngine { } } else { - Slog.w(TAG, "Failure adding authority: account=" - + accountName + " auth=" + authorityName + Slog.w(TAG, "Failure adding authority:" + + " auth=" + authorityName + " enabled=" + enabled + " syncable=" + syncable); } |