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.6 6.5 Change-Id: I232167d4c91070369e770c41d3ea53bd2406a03f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 6b59ff573028eabba42ca63ce50ce05fa160ecaf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
27291b97b4
commit
1bba8b894a
@ -347,8 +347,8 @@ void QLoggingRegistry::unregisterCategory(QLoggingCategory *cat)
|
||||
for enabling debugging by default for category \a categoryName. The
|
||||
category name must start with "qt."
|
||||
*/
|
||||
void QLoggingRegistry::registerEnvironmentOverrideForCategory(QByteArrayView categoryName,
|
||||
QByteArrayView environment)
|
||||
void QLoggingRegistry::registerEnvironmentOverrideForCategory(const char *categoryName,
|
||||
const char *environment)
|
||||
{
|
||||
qtCategoryEnvironmentOverrides.insert(categoryName, environment);
|
||||
}
|
||||
@ -442,7 +442,7 @@ void QLoggingRegistry::defaultCategoryFilter(QLoggingCategory *cat)
|
||||
if (it == reg->qtCategoryEnvironmentOverrides.end())
|
||||
debug = false;
|
||||
else
|
||||
debug = qEnvironmentVariableIntValue(it.value().data());
|
||||
debug = qEnvironmentVariableIntValue(it.value());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user