summaryrefslogtreecommitdiffstats
path: root/src/sdk
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2013-01-31 15:58:22 +0100
committerTim Jenssen <tim.jenssen@digia.com>2013-02-01 12:13:52 +0100
commit4c1ea166e615b7988542b0a3145243a366fa2d3c (patch)
tree8172280d6340097c893586d1e98ed8037bd10afe /src/sdk
parenta68325be2c9bddedf7415a865e911f0dfdef766c (diff)
Prevent too long install path.
Task-number: QTIFW-201 Change-Id: Ie3c493149971ee3b00b3390ce7e301df4662650a Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src/sdk')
-rw-r--r--src/sdk/installerbasecommons.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp
index 75bcd2eed..e9bdc46e1 100644
--- a/src/sdk/installerbasecommons.cpp
+++ b/src/sdk/installerbasecommons.cpp
@@ -55,6 +55,10 @@
#include <QStackedWidget>
#include <QVBoxLayout>
+#ifdef Q_OS_WIN
+#include <qt_windows.h>
+#endif
+
using namespace QInstaller;
@@ -382,6 +386,12 @@ QString TargetDirectoryPageImpl::targetDirWarning() const
QString dir = QDir::toNativeSeparators(targetDir());
#ifdef Q_OS_WIN
+ // folder length (set by user) + maintenance tool name length (no extension) + extra padding
+ if ((dir.length() + packageManagerCore()->settings().uninstallerName().length() + 20) >= MAX_PATH) {
+ return TargetDirectoryPageImpl::tr("The path you have entered is too long, please make sure to "
+ "specify a valid path.");
+ }
+
if (dir.count() >= 3 && dir.indexOf(QRegExp(QLatin1String("[a-zA-Z]:"))) == 0
&& dir.at(2) != QLatin1Char('\\')) {
return TargetDirectoryPageImpl::tr("The path you have entered is not valid, please make sure to "