Explicitly close FD binder parameters in backup/restore API calls
CloseGuard is grateful. Bug 30893100 Change-Id: Ia6bd4d88204839add59d9d245aad673d67b11bea
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user