diff options
author | Niels Weber <niels.weber@digia.com> | 2015-01-22 13:16:05 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@theqtcompany.com> | 2015-01-26 15:43:56 +0100 |
commit | ba2ba310c3b65e4fdf48dc2fd672e572a0a9b295 (patch) | |
tree | 3fd0c8b24534e233f77b3f06495a6b831af59e8f /src/libs/installer/remoteserverconnection.cpp | |
parent | db423c387a601305a9851a8e72fa3d46aaabaa9d (diff) |
Set correct permissions for ini files
This is necessary due to a behavior change in QSettings/Qt 5
that now creates ini files with more restrictive permissions
than before.
Task-number: QTIFW-589
Task-number: QTBUG-44086
Change-Id: I296ad4b312a933cbda7dd5c1f644294f83e1850d
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'src/libs/installer/remoteserverconnection.cpp')
-rw-r--r-- | src/libs/installer/remoteserverconnection.cpp | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/src/libs/installer/remoteserverconnection.cpp b/src/libs/installer/remoteserverconnection.cpp index 4323b3765..ad6d89bad 100644 --- a/src/libs/installer/remoteserverconnection.cpp +++ b/src/libs/installer/remoteserverconnection.cpp @@ -38,8 +38,8 @@ #include "protocol.h" #include "remoteserverconnection_p.h" #include "utils.h" +#include "permissionsettings.h" -#include <QSettings> #include <QTcpSocket> namespace QInstaller { @@ -47,7 +47,6 @@ namespace QInstaller { RemoteServerConnection::RemoteServerConnection(qintptr socketDescriptor, const QString &key) : m_socketDescriptor(socketDescriptor) , m_process(0) - , m_settings(0) , m_engine(0) , m_authorizationKey(key) , m_signalReceiver(0) @@ -58,6 +57,7 @@ void RemoteServerConnection::run() { QTcpSocket socket; socket.setSocketDescriptor(m_socketDescriptor); + QScopedPointer<PermissionSettings> settings; QDataStream stream; stream.setDevice(&socket); @@ -102,14 +102,12 @@ void RemoteServerConnection::run() stream >> application; stream >> organization; stream >> scope; stream >> format; stream >> fileName; - if (m_settings) - m_settings->deleteLater(); if (fileName.toString().isEmpty()) { - m_settings = new QSettings(QSettings::Format(format.toInt()), + settings.reset(new PermissionSettings(QSettings::Format(format.toInt()), QSettings::Scope(scope.toInt()), organization.toString(), application - .toString()); + .toString())); } else { - m_settings = new QSettings(fileName.toString(), QSettings::Format(format.toInt())); + settings.reset(new PermissionSettings(fileName.toString(), QSettings::Format(format.toInt()))); } } else if (type == QLatin1String(Protocol::QProcess)) { if (m_process) @@ -128,8 +126,7 @@ void RemoteServerConnection::run() QString type; stream >> type; if (type == QLatin1String(Protocol::QSettings)) { - m_settings->deleteLater(); - m_settings = 0; + settings.reset(); } else if (command == QLatin1String(Protocol::QProcess)) { m_signalReceiver->m_receivedSignals.clear(); m_process->deleteLater(); @@ -153,7 +150,7 @@ void RemoteServerConnection::run() if (command.startsWith(QLatin1String(Protocol::QProcess))) { handleQProcess(command, stream); } else if (command.startsWith(QLatin1String(Protocol::QSettings))) { - handleQSettings(command, stream); + handleQSettings(command, stream, settings.data()); } else if (command.startsWith(QLatin1String(Protocol::QAbstractFileEngine))) { handleQFSFileEngine(command, stream); } else { @@ -290,8 +287,12 @@ void RemoteServerConnection::handleQProcess(const QString &command, QDataStream } } -void RemoteServerConnection::handleQSettings(const QString &command, QDataStream &stream) +void RemoteServerConnection::handleQSettings(const QString &command, QDataStream &stream, + PermissionSettings *settings) { + if (!settings) + return; + quint32 size; stream >> size; while (stream.device()->bytesAvailable() < size) { @@ -307,75 +308,75 @@ void RemoteServerConnection::handleQSettings(const QString &command, QDataStream QDataStream data(ba); if (command == QLatin1String(Protocol::QSettingsAllKeys)) { - sendData(stream, m_settings->allKeys()); + sendData(stream, settings->allKeys()); } else if (command == QLatin1String(Protocol::QSettingsBeginGroup)) { QString prefix; data >> prefix; - m_settings->beginGroup(prefix); + settings->beginGroup(prefix); } else if (command == QLatin1String(Protocol::QSettingsBeginWriteArray)) { QString prefix; data >> prefix; qint32 size; data >> size; - m_settings->beginWriteArray(prefix, size); + settings->beginWriteArray(prefix, size); } else if (command == QLatin1String(Protocol::QSettingsBeginReadArray)) { QString prefix; data >> prefix; - sendData(stream, m_settings->beginReadArray(prefix)); + sendData(stream, settings->beginReadArray(prefix)); } else if (command == QLatin1String(Protocol::QSettingsChildGroups)) { - sendData(stream, m_settings->childGroups()); + sendData(stream, settings->childGroups()); } else if (command == QLatin1String(Protocol::QSettingsChildKeys)) { - sendData(stream, m_settings->childKeys()); + sendData(stream, settings->childKeys()); } else if (command == QLatin1String(Protocol::QSettingsClear)) { - m_settings->clear(); + settings->clear(); } else if (command == QLatin1String(Protocol::QSettingsContains)) { QString key; data >> key; - sendData(stream, m_settings->contains(key)); + sendData(stream, settings->contains(key)); } else if (command == QLatin1String(Protocol::QSettingsEndArray)) { - m_settings->endArray(); + settings->endArray(); } else if (command == QLatin1String(Protocol::QSettingsEndGroup)) { - m_settings->endGroup(); + settings->endGroup(); } else if (command == QLatin1String(Protocol::QSettingsFallbacksEnabled)) { - sendData(stream, m_settings->fallbacksEnabled()); + sendData(stream, settings->fallbacksEnabled()); } else if (command == QLatin1String(Protocol::QSettingsFileName)) { - sendData(stream, m_settings->fileName()); + sendData(stream, settings->fileName()); } else if (command == QLatin1String(Protocol::QSettingsGroup)) { - sendData(stream, m_settings->group()); + sendData(stream, settings->group()); } else if (command == QLatin1String(Protocol::QSettingsIsWritable)) { - sendData(stream, m_settings->isWritable()); + sendData(stream, settings->isWritable()); } else if (command == QLatin1String(Protocol::QSettingsRemove)) { QString key; data >> key; - m_settings->remove(key); + settings->remove(key); } else if (command == QLatin1String(Protocol::QSettingsSetArrayIndex)) { qint32 i; data >> i; - m_settings->setArrayIndex(i); + settings->setArrayIndex(i); } else if (command == QLatin1String(Protocol::QSettingsSetFallbacksEnabled)) { bool b; data >> b; - m_settings->setFallbacksEnabled(b); + settings->setFallbacksEnabled(b); } else if (command == QLatin1String(Protocol::QSettingsStatus)) { - sendData(stream, m_settings->status()); + sendData(stream, settings->status()); } else if (command == QLatin1String(Protocol::QSettingsSync)) { - m_settings->sync(); + settings->sync(); } else if (command == QLatin1String(Protocol::QSettingsSetValue)) { QString key; QVariant value; data >> key; data >> value; - m_settings->setValue(key, value); + settings->setValue(key, value); } else if (command == QLatin1String(Protocol::QSettingsValue)) { QString key; QVariant defaultValue; data >> key; data >> defaultValue; - sendData(stream, m_settings->value(key, defaultValue)); + sendData(stream, settings->value(key, defaultValue)); } else if (command == QLatin1String(Protocol::QSettingsOrganizationName)) { - sendData(stream, m_settings->organizationName()); + sendData(stream, settings->organizationName()); } else if (command == QLatin1String(Protocol::QSettingsApplicationName)) { - sendData(stream, m_settings->applicationName()); + sendData(stream, settings->applicationName()); } else if (!command.isEmpty()) { qDebug() << "Unknown QSettings command:" << command; } |