summaryrefslogtreecommitdiffstats
path: root/core/java/android/os/Binder.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2011-12-14 18:07:54 -0800
committerJeff Sharkey <jsharkey@android.com>2011-12-14 18:07:54 -0800
commit7f97e65add29b3887755e998804b013168f773b1 (patch)
tree8926221ecf3cb5e159bb4f40ceb72d1b37ed3fb2 /core/java/android/os/Binder.java
parent377d4ae5cbb5304d3bae11a511bd51e2c58db236 (diff)
downloadframeworks_base-7f97e65add29b3887755e998804b013168f773b1.zip
frameworks_base-7f97e65add29b3887755e998804b013168f773b1.tar.gz
frameworks_base-7f97e65add29b3887755e998804b013168f773b1.tar.bz2
Clear reply before writing exception.
Changes Binder.execTransact() to clear any partial reply before writing the exception. Specifically, this fixes case where an onTransact() could leave a writeNoException() floating in the reply. Bug: 5686023 Change-Id: Ibc944464a010f5ec2fd8ef3cc84ac23d8260a491
Diffstat (limited to 'core/java/android/os/Binder.java')
-rw-r--r--core/java/android/os/Binder.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index c25ebb7..24569fa 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -337,13 +337,16 @@ public class Binder implements IBinder {
try {
res = onTransact(code, data, reply, flags);
} catch (RemoteException e) {
+ reply.setDataPosition(0);
reply.writeException(e);
res = true;
} catch (RuntimeException e) {
+ reply.setDataPosition(0);
reply.writeException(e);
res = true;
} catch (OutOfMemoryError e) {
RuntimeException re = new RuntimeException("Out of memory", e);
+ reply.setDataPosition(0);
reply.writeException(re);
res = true;
}