summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/extractarchiveoperation.cpp
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2023-05-11 12:39:01 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2023-05-22 13:53:32 +0000
commit8d72fb0c76db430488066b579fe787caf3889895 (patch)
treed07442a6716f8001bc4bc4fbe1c44a307cebee82 /src/libs/installer/extractarchiveoperation.cpp
parent2c12d1ce130be0e86dea7576d6d7841938695e11 (diff)
Fix admin rights handling during installer/updater/uninstaller runs
The installer.gainAdminRights() and installer.dropAdminRights() methods are invokable from the scripting API. During installing, updating or uninstalling components, installer does it's own decision making to request and drop admin rights on-demand, but this could be overridden with the aforementioned methods. This was not taken into account, instead it was only checked if admin rights were gained in the context of the calling method. Fix by checking if the admin rights were present at the start of the installer, or if they were requested by anyone during installation. Task-number: QTIFW-2929 Change-Id: Ie4f6fc0ac746183b00f460a2e60c57c2eae9808c Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer/extractarchiveoperation.cpp')
-rw-r--r--src/libs/installer/extractarchiveoperation.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libs/installer/extractarchiveoperation.cpp b/src/libs/installer/extractarchiveoperation.cpp
index 162bd1609..8995bbcbf 100644
--- a/src/libs/installer/extractarchiveoperation.cpp
+++ b/src/libs/installer/extractarchiveoperation.cpp
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2022 The Qt Company Ltd.
+** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -103,7 +103,7 @@ void ExtractArchiveOperation::backup()
return;
}
- const bool hasAdminRights = (AdminAuthorization::hasAdminRights() || RemoteClient::instance().isActive());
+ const bool hasAdminRights = (packageManager() && packageManager()->hasAdminRights());
const bool canCreateSymLinks = QInstaller::canCreateSymbolicLinks();
bool needsAdminRights = false;