summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qdir
diff options
context:
space:
mode:
authorJonas Gastal <jgastal@profusion.mobi>2012-01-29 22:57:56 -0200
committerQt by Nokia <qt-info@nokia.com>2012-02-07 22:05:51 +0100
commit63f634322b2c0f795bd424be9e51953a10c701de (patch)
tree63c1cad957bc1a319a27986052ec6a535ed422cc /tests/auto/corelib/io/qdir
parent763d0a55e912689f2c0cbad41e81cdc3dbf402d0 (diff)
Don't allow cd'ing to above root.
Task-number: QTBUG-23893 Change-Id: Ifc6e22f135a1f6bff7c0fa8bef3ea7e1042ae819 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto/corelib/io/qdir')
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
index f1c9015092..539bea5e8d 100644
--- a/tests/auto/corelib/io/qdir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -190,6 +190,8 @@ private slots:
void isReadable();
+ void cdBelowRoot();
+
private:
QString m_dataPath;
};
@@ -1942,6 +1944,33 @@ void tst_QDir::isReadable()
#endif
}
+void tst_QDir::cdBelowRoot()
+{
+#if defined (Q_OS_UNIX)
+#define ROOT QString("/")
+#define DIR QString("/tmp")
+#define CD_INTO "tmp"
+#else
+#define ROOT QString::fromLocal8Bit(qgetenv("SystemDrive"))+"/"
+#define DIR QString::fromLocal8Bit(qgetenv("SystemRoot")).replace('\\', '/')
+#define CD_INTO QString::fromLocal8Bit(qgetenv("SystemRoot")).mid(3)
+#endif
+
+ QDir root(ROOT);
+ QVERIFY(!root.cd(".."));
+ QCOMPARE(root.path(), ROOT);
+ QVERIFY(root.cd(CD_INTO));
+ QCOMPARE(root.path(), DIR);
+
+ QDir dir(DIR);
+ QVERIFY(!dir.cd("../.."));
+ QCOMPARE(dir.path(), DIR);
+ QVERIFY(!dir.cd("../abs/../.."));
+ QCOMPARE(dir.path(), DIR);
+ QVERIFY(dir.cd(".."));
+ QCOMPARE(dir.path(), ROOT);
+}
+
QTEST_MAIN(tst_QDir)
#include "tst_qdir.moc"