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

Commit 7fbed032 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Attempt to unlink session file if hardlink fails" into udc-dev

parents cc87e369 dd7ffddb
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -1645,13 +1645,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            throw new SecurityException("link() can only be run by the system");
        }

        try {
        final File target = new File(path);
        final File source = new File(stageDir, target.getName());
        var sourcePath = source.getAbsolutePath();
        try {
            try {
                Os.link(path, source.getAbsolutePath());
                Os.link(path, sourcePath);
                // Grant READ access for APK to be read successfully
                Os.chmod(source.getAbsolutePath(), 0644);
                Os.chmod(sourcePath, 0644);
            } catch (ErrnoException e) {
                e.rethrowAsIOException();
            }
@@ -1659,6 +1660,12 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
                throw new IOException("Can't relabel file: " + source);
            }
        } catch (IOException e) {
            try {
                Os.unlink(sourcePath);
            } catch (Exception ignored) {
                Slog.d(TAG, "Failed to unlink session file: " + sourcePath);
            }

            throw ExceptionUtils.wrap(e);
        }
    }