Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91bb0e5c authored by Christopher Tate's avatar Christopher Tate
Browse files

Explicitly close FD binder parameters in backup/restore API calls

CloseGuard is grateful.

Bug 30893100

Change-Id: Ia6bd4d88204839add59d9d245aad673d67b11bea
parent ab262da7
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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);
                }
            }
        }