summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfilesystemengine_p.h
diff options
context:
space:
mode:
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: