From 91bb0e5cca2612545b3b046f5bb1b3bc747be8af Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Fri, 30 Sep 2016 17:52:19 -0700 Subject: Explicitly close FD binder parameters in backup/restore API calls CloseGuard is grateful. Bug 30893100 Change-Id: Ia6bd4d88204839add59d9d245aad673d67b11bea --- core/java/android/app/backup/BackupAgent.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java index bc8280681e4a..3ba81c8689b9 100644 --- a/core/java/android/app/backup/BackupAgent.java +++ b/core/java/android/app/backup/BackupAgent.java @@ -35,6 +35,8 @@ import android.system.StructStat; import android.util.ArraySet; import android.util.Log; +import libcore.io.IoUtils; + import org.xmlpull.v1.XmlPullParserException; import java.io.File; @@ -921,6 +923,13 @@ public abstract class BackupAgent extends ContextWrapper { } catch (RemoteException e) { // we'll time out anyway, so we're safe } + + // Don't close the fd out from under the system service if this was local + if (Binder.getCallingPid() != Process.myPid()) { + IoUtils.closeQuietly(oldState); + IoUtils.closeQuietly(data); + IoUtils.closeQuietly(newState); + } } } @@ -951,6 +960,11 @@ public abstract class BackupAgent extends ContextWrapper { } catch (RemoteException e) { // we'll time out anyway, so we're safe } + + if (Binder.getCallingPid() != Process.myPid()) { + IoUtils.closeQuietly(data); + IoUtils.closeQuietly(newState); + } } } @@ -994,6 +1008,10 @@ public abstract class BackupAgent extends ContextWrapper { } catch (RemoteException e) { // we'll time out anyway, so we're safe } + + if (Binder.getCallingPid() != Process.myPid()) { + IoUtils.closeQuietly(data); + } } } @@ -1041,6 +1059,10 @@ public abstract class BackupAgent extends ContextWrapper { } catch (RemoteException e) { // we'll time out anyway, so we're safe } + + if (Binder.getCallingPid() != Process.myPid()) { + IoUtils.closeQuietly(data); + } } } -- cgit v1.2.3-59-g8ed1b