diff options
author | Brad Ebinger <breadley@google.com> | 2021-04-29 13:59:16 -0700 |
---|---|---|
committer | Brad Ebinger <breadley@google.com> | 2021-04-29 21:18:17 +0000 |
commit | bde5c375206a628fe1dff233541dfcb4b768f2f6 (patch) | |
tree | 1188570ab700f2522cb9fd4f7ff24e9f62680e74 /telecomm | |
parent | ce5f5faab8dd790ea38cdc7d4d1754b4fa8d5813 (diff) |
Bound Telecom logging recursion
Put a bound on the recursion in Session#toString
to ensure we do not accidently cause a Stack overflow
Bug: 186694546
AOSP: aosp/1691210
Test: atest TeleServiceTests
Change-Id: I52f44dd02d0d860d0894e9b84fded8cf5ff5a18e
Diffstat (limited to 'telecomm')
-rw-r--r-- | telecomm/java/android/telecom/Logging/Session.java | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/telecomm/java/android/telecom/Logging/Session.java b/telecomm/java/android/telecom/Logging/Session.java index 4aa3614fa004..e2fb6019f30a 100644 --- a/telecomm/java/android/telecom/Logging/Session.java +++ b/telecomm/java/android/telecom/Logging/Session.java @@ -453,19 +453,19 @@ public class Session { @Override public String toString() { - if (mParentSession != null && mIsStartedFromActiveSession) { + Session sessionToPrint = this; + if (getParentSession() != null && isStartedFromActiveSession()) { // Log.startSession was called from within another active session. Use the parent's // Id instead of the child to reduce confusion. - return mParentSession.toString(); - } else { - StringBuilder methodName = new StringBuilder(); - methodName.append(getFullMethodPath(false /*truncatePath*/)); - if (mOwnerInfo != null && !mOwnerInfo.isEmpty()) { - methodName.append("("); - methodName.append(mOwnerInfo); - methodName.append(")"); - } - return methodName.toString() + "@" + getFullSessionId(); + sessionToPrint = getRootSession("toString"); + } + StringBuilder methodName = new StringBuilder(); + methodName.append(sessionToPrint.getFullMethodPath(false /*truncatePath*/)); + if (sessionToPrint.getOwnerInfo() != null && !sessionToPrint.getOwnerInfo().isEmpty()) { + methodName.append("("); + methodName.append(sessionToPrint.getOwnerInfo()); + methodName.append(")"); } + return methodName.toString() + "@" + sessionToPrint.getFullSessionId(); } } |