diff --git a/src/dconfigfile.cpp b/src/dconfigfile.cpp index 7874c90c..bac32b24 100644 --- a/src/dconfigfile.cpp +++ b/src/dconfigfile.cpp @@ -42,6 +42,9 @@ inline static bool subpathIsValid(const QString &subpath, const QDir &dir) if (subpath.isEmpty()) return true; + if (!subpath.startsWith(QLatin1Char('/'))) + return false; + const QDir subDir(dir.filePath(subpath.mid(1))); return subDir.absolutePath().startsWith(dir.absolutePath()); } @@ -710,6 +713,7 @@ class Q_DECL_HIDDEN DConfigMetaImpl : public DConfigMeta { qCWarning(cfLog, "Can't load meta file from local prefix: \"%s\"", qPrintable(localPrefix)); return false; } + qCDebug(cfLog, "Load meta file: \"%s\"", qPrintable(path)); QScopedPointer meta(new QFile(path)); diff --git a/tests/ut_dconfigfile.cpp b/tests/ut_dconfigfile.cpp index 9efb5d24..45c007d8 100644 --- a/tests/ut_dconfigfile.cpp +++ b/tests/ut_dconfigfile.cpp @@ -473,6 +473,10 @@ TEST_F(ut_DConfigFile, setSubpath) { DConfigFile config(APP_ID, FILE_NAME); ASSERT_TRUE(config.load(LocalPrefix)); } + { + DConfigFile config(APP_ID, FILE_NAME, "a/b"); + ASSERT_FALSE(config.load(LocalPrefix)); + } { DConfigFile config(APP_ID, FILE_NAME, "/a/b"); ASSERT_TRUE(config.load(LocalPrefix));