summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2013-09-16 15:24:10 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2013-09-20 12:48:32 +0200
commit7798b3d3e010367be64d975f2337b8019454ccf0 (patch)
tree7b226c6a16bb3f7e8b0a1fec886f3493ad610b62 /src
parente2b967f5d8ba5421cf1a026d498a6de77962362c (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.cpp20
-rw-r--r--src/libs/installer/fileutils.h2
-rw-r--r--src/libs/installer/getrepositorymetainfojob.cpp2
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());