Explicitly close FD binder parameters in backup/restore API calls

CloseGuard is grateful.

Bug 30893100

Change-Id: Ia6bd4d88204839add59d9d245aad673d67b11bea
This commit is contained in:
Christopher Tate
2016-09-30 17:52:19 -07:00
parent ab262da7df
commit 91bb0e5cca

View File

@@ -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);
}
}
}