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

Commit b1ac010c authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Attempt to unlink session file if hardlink fails" into udc-dev am: 7fbed032 am: 82105927

parents 8beb63ad 82105927
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);
        }
    }