diff options
| author | Marcin Oczeretko <marcinoc@google.com> | 2022-01-17 11:41:37 +0000 |
|---|---|---|
| committer | Marcin Oczeretko <marcinoc@google.com> | 2022-01-18 17:02:23 +0000 |
| commit | 28d940e33ab78f3561070385c5bb784e0016fa3e (patch) | |
| tree | e320843710de0af091d26b4a8b0ea9d6c14db635 /core/java/android | |
| parent | 702c8991ec79c46af79729254e4645a64cddd116 (diff) | |
Fix NPE in Binder#getTransactionName
Bug: 214053959
Test: manual
Change-Id: Ie77080d20f638e5e6e0a6ecb255d45bdb12f3c4d
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/Binder.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index 429450ce8e5e..80cf2f87f1d6 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -311,6 +311,7 @@ public class Binder implements IBinder { private final long mObject; private IInterface mOwner; + @Nullable private String mDescriptor; private volatile String[] mTransactionTraceNames = null; private volatile String mSimpleDescriptor = null; @@ -930,8 +931,8 @@ public class Binder implements IBinder { transactionNames[i] = buf.toString(); buf.setLength(0); } - mTransactionTraceNames = transactionNames; mSimpleDescriptor = descriptor; + mTransactionTraceNames = transactionNames; } final int index = transactionCode - FIRST_CALL_TRANSACTION; if (index < 0 || index >= mTransactionTraceNames.length) { @@ -940,13 +941,19 @@ public class Binder implements IBinder { return mTransactionTraceNames[index]; } - private String getSimpleDescriptor() { - final int dot = mDescriptor.lastIndexOf("."); + private @NonNull String getSimpleDescriptor() { + String descriptor = mDescriptor; + if (descriptor == null) { + // Just "Binder" to avoid null checks in transaction name tracing. + return "Binder"; + } + + final int dot = descriptor.lastIndexOf("."); if (dot > 0) { // Strip the package name - return mDescriptor.substring(dot + 1); + return descriptor.substring(dot + 1); } - return mDescriptor; + return descriptor; } /** |
