summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@theqtcompany.com>2016-02-04 12:40:33 +0200
committerKatja Marttila <katja.marttila@theqtcompany.com>2016-02-15 11:25:08 +0000
commit9d4be1a53be2b643114d051332d8439bc8809e59 (patch)
treef18b7e67224eb110d763cb5a8c7996aa5f33f439
parent85cad029464f1209b5aeab7150b6e3df1fa1f69b (diff)
Fix crash when updating admin installation with user/temp repository
Grant permission rights for writing maintenance config file Change-Id: I9364358455b8ad5e98b03c20d949c2562ba2535a Task-number: QTIFW-740 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
-rw-r--r--src/libs/installer/packagemanagercore.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 81fd29472..e008a220d 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -1025,8 +1025,17 @@ void PackageManagerCore::networkSettingsChanged()
d->m_repoFetched = false;
d->m_updateSourcesAdded = false;
- if (d->isUpdater() || d->isPackageManager())
+ if (d->isUpdater() || d->isPackageManager()) {
+ 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();