From 7f97e65add29b3887755e998804b013168f773b1 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 14 Dec 2011 18:07:54 -0800 Subject: 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 --- core/java/android/os/Binder.java | 3 +++ 1 file changed, 3 insertions(+) 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; } -- cgit v1.1