summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfilesystemengine_p.h
diff options
context:
space:
mode:
authorLeander Beernaert <leander.beernaert@qt.io>2019-11-14 13:03:46 +0100
committerLeander Beernaert <leander.beernaert@qt.io>2019-11-19 13:53:21 +0100
commit26e876912435bdafbca2b425af43824d7ec5b876 (patch)
treeb7ee83cdd9de18ce5970bab0bb217a972d3d2445 /src/corelib/io/qfilesystemengine_p.h
parent7a6c6da2ebbfef33f7284ce5c96aa0c3acabc6bc (diff)
parentbac999f38ca10147832846f6d7df1e4a051d3760 (diff)
Merge remote-tracking branch 'origin/dev' into wip/cmake
Diffstat (limited to 'src/corelib/io/qfilesystemengine_p.h')
-rw-r--r--src/corelib/io/qfilesystemengine_p.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/corelib/io/qfilesystemengine_p.h b/src/corelib/io/qfilesystemengine_p.h
index e44837747c..ecfdc03743 100644
--- a/src/corelib/io/qfilesystemengine_p.h
+++ b/src/corelib/io/qfilesystemengine_p.h
@@ -58,6 +58,36 @@
QT_BEGIN_NAMESPACE
+#define Q_RETURN_ON_INVALID_FILENAME(message, result) \
+ { \
+ QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning(message); \
+ errno = EINVAL; \
+ return (result); \
+ }
+
+inline bool qIsFilenameBroken(const QByteArray &name)
+{
+ return name.contains('\0');
+}
+
+inline bool qIsFilenameBroken(const QString &name)
+{
+ return name.contains(QLatin1Char('\0'));
+}
+
+inline bool qIsFilenameBroken(const QFileSystemEntry &entry)
+{
+ return qIsFilenameBroken(entry.nativeFilePath());
+}
+
+#define Q_CHECK_FILE_NAME(name, result) \
+ do { \
+ if (Q_UNLIKELY((name).isEmpty())) \
+ Q_RETURN_ON_INVALID_FILENAME("Empty filename passed to function", (result)); \
+ if (Q_UNLIKELY(qIsFilenameBroken(name))) \
+ Q_RETURN_ON_INVALID_FILENAME("Broken filename passed to function", (result)); \
+ } while (false)
+
class QFileSystemEngine
{
public: