diff options
author | Jeff Sharkey <jsharkey@android.com> | 2011-12-14 18:07:54 -0800 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2011-12-14 18:07:54 -0800 |
commit | 7f97e65add29b3887755e998804b013168f773b1 (patch) | |
tree | 8926221ecf3cb5e159bb4f40ceb72d1b37ed3fb2 /core/java/android/os/Binder.java | |
parent | 377d4ae5cbb5304d3bae11a511bd51e2c58db236 (diff) | |
download | frameworks_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.java | 3 |
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; } |