diff options
author | Marc Mutz <marc.mutz@qt.io> | 2024-02-08 14:25:24 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2024-02-17 16:20:21 +0000 |
commit | 6b59ff573028eabba42ca63ce50ce05fa160ecaf (patch) | |
tree | acd07321882ddb365c1b1dfa1e53f866e98dfae0 /src/corelib/io/qloggingregistry_p.h | |
parent | ec24b36d3db82c340d9386951ea48c26f77c2923 (diff) |
QLoggingRegistry: further defend against non-NUL-terminated strings
Various functions in QLoggingRegistry took QByteArrayView, but they
continued to assume that the data was NUL-terminated (converting back
to const char* by calling data()).
Make sure only NUL-terminated strings are passed by taking in the
tranditional way, as const char*. Keep QByteArrayView when storing in
the map as key, to avoid comparing just pointer values (as opposed to
the string content).
Amends 806545fcc8d6b3b96a5191a00a31e9a39837189c.
Pick-to: 6.7 6.6 6.5
Change-Id: I232167d4c91070369e770c41d3ea53bd2406a03f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qloggingregistry_p.h')
-rw-r--r-- | src/corelib/io/qloggingregistry_p.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/io/qloggingregistry_p.h b/src/corelib/io/qloggingregistry_p.h index 69ed1a4f96..aa38ed895b 100644 --- a/src/corelib/io/qloggingregistry_p.h +++ b/src/corelib/io/qloggingregistry_p.h @@ -97,7 +97,7 @@ public: #ifndef QT_BUILD_INTERNAL Q_CORE_EXPORT // always export from QtCore #endif - void registerEnvironmentOverrideForCategory(QByteArrayView categoryName, QByteArrayView environment); + void registerEnvironmentOverrideForCategory(const char *categoryName, const char *environment); void setApiRules(const QString &content); @@ -127,7 +127,7 @@ private: QList<QLoggingRule> ruleSets[NumRuleSets]; QHash<QLoggingCategory *, QtMsgType> categories; QLoggingCategory::CategoryFilter categoryFilter; - QMap<QByteArrayView, QByteArrayView> qtCategoryEnvironmentOverrides; + QMap<QByteArrayView, const char *> qtCategoryEnvironmentOverrides; friend class ::tst_QLoggingRegistry; }; @@ -140,12 +140,12 @@ public: {} private: - static const char *registerOverride(QByteArrayView categoryName, QByteArrayView environment) + static const char *registerOverride(const char *categoryName, const char *environment) { QLoggingRegistry *c = QLoggingRegistry::instance(); if (c) c->registerEnvironmentOverrideForCategory(categoryName, environment); - return categoryName.data(); + return categoryName; } }; |