summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore.cpp
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@theqtcompany.com>2015-10-22 14:18:52 +0300
committerKatja Marttila <katja.marttila@theqtcompany.com>2015-10-30 12:50:15 +0000
commitba9d6002fc2acb546d4a61453e2f977c4965bb0e (patch)
tree041f74d71e516682fdd15ff43c39214e65c33f3b /src/libs/installer/packagemanagercore.cpp
parentd19d8323c67da31247ca90a75ba390856d29e225 (diff)
Fix crash when updating admin installation with user/temp repository
Grant permission rights for writing maintenance config file Change-Id: Ib95fc05b80b95ce952b4bcf2395fbb5ed0ef9153 Task-number: QTIFW-740 Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r--src/libs/installer/packagemanagercore.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 1f32b9119..89a90d343 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -1025,8 +1025,18 @@ void PackageManagerCore::networkSettingsChanged()
d->m_repoFetched = false;
d->m_updateSourcesAdded = false;
- if (isMaintainer())
+ if (isMaintainer() ) {
+ bool gainedAdminRights = false;
+ QTemporaryFile tempAdminFile(d->targetDir() + QStringLiteral("/XXXXXX"));
+ if (!tempAdminFile.open() || !tempAdminFile.isWritable()) {
+ gainAdminRights();
+ gainedAdminRights = true;
+ }
d->writeMaintenanceConfigFiles();
+ if (gainedAdminRights)
+ dropAdminRights();
+ }
+
KDUpdater::FileDownloaderFactory::instance().setProxyFactory(proxyFactory());
emit coreNetworkSettingsChanged();