diff options
author | kh1 <karsten.heimrich@digia.com> | 2013-09-16 15:24:10 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2013-09-20 12:48:32 +0200 |
commit | 7798b3d3e010367be64d975f2337b8019454ccf0 (patch) | |
tree | 7b226c6a16bb3f7e8b0a1fec886f3493ad610b62 /src | |
parent | e2b967f5d8ba5421cf1a026d498a6de77962362c (diff) |
Fix broken random name generation for temporary directories.
Task-number: QTIFW-354
The function was correctly calculating the initial part of the
name using QTemporaryFile, though the appended "meta" was not
checked and could result in duplicated names later on.
Change-Id: I00eeebbb01fbfcc5a626e4bdfe04013f8e520ed5
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/fileutils.cpp | 20 | ||||
-rw-r--r-- | src/libs/installer/fileutils.h | 2 | ||||
-rw-r--r-- | src/libs/installer/getrepositorymetainfojob.cpp | 2 |
3 files changed, 14 insertions, 10 deletions
diff --git a/src/libs/installer/fileutils.cpp b/src/libs/installer/fileutils.cpp index 1fd5bf35c..6f8c44622 100644 --- a/src/libs/installer/fileutils.cpp +++ b/src/libs/installer/fileutils.cpp @@ -453,14 +453,18 @@ QString QInstaller::generateTemporaryFileName(const QString &templ) return f.fileName(); } -QString QInstaller::createTemporaryDirectory(const QString &templ) -{ - const QString t = QDir::tempPath() + QLatin1String("/") + templ + QLatin1String("XXXXXX"); - QTemporaryFile f(t); - if (!f.open()) - throw Error(QObject::tr("Could not create temporary folder for template %1: %2").arg(t, f.errorString())); - const QString path = f.fileName() + QLatin1String("meta"); - qDebug() << "\nCreating meta data directory at" << path; +QString QInstaller::createTemporaryDirectory(const QString &templateName) +{ + QString path = QDir::tempPath() + QLatin1String("/") + templateName + QLatin1String("XXXXXX"); + { + QTemporaryFile f(path); + if (!f.open()) { + throw Error(QObject::tr("Could not create temporary directory %1: %2").arg(f.fileName(), + f.errorString())); + } + path = f.fileName(); + } + qDebug() << "\nCreating temporary directory at:" << path; QInstaller::mkpath(path); return path; diff --git a/src/libs/installer/fileutils.h b/src/libs/installer/fileutils.h index 9bbcec72a..c22aa36b6 100644 --- a/src/libs/installer/fileutils.h +++ b/src/libs/installer/fileutils.h @@ -108,7 +108,7 @@ private: Creates a temporary directory @throws QInstaller::Error if creating the temporary directory fails */ - QString INSTALLER_EXPORT createTemporaryDirectory(const QString &templ=QString()); + QString INSTALLER_EXPORT createTemporaryDirectory(const QString &templateName = QString()); QString INSTALLER_EXPORT generateTemporaryFileName(const QString &templ=QString()); diff --git a/src/libs/installer/getrepositorymetainfojob.cpp b/src/libs/installer/getrepositorymetainfojob.cpp index 1c8d07525..c0fca0b13 100644 --- a/src/libs/installer/getrepositorymetainfojob.cpp +++ b/src/libs/installer/getrepositorymetainfojob.cpp @@ -245,7 +245,7 @@ void GetRepositoryMetaInfoJob::updatesXmlDownloadFinished() Q_ASSERT(QFile::exists(fn)); try { - m_temporaryDirectory = createTemporaryDirectory(QLatin1String("remoterepo")); + m_temporaryDirectory = createTemporaryDirectory(QLatin1String("remoterepo-")); m_tempDirDeleter.add(m_temporaryDirectory); } catch (const QInstaller::Error& e) { finished(QInstaller::ExtractionError, e.message()); |