summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2024-01-30 11:33:13 +0100
committerMarc Mutz <marc.mutz@qt.io>2024-02-03 08:33:28 +0100
commita327117c0d851dac4eea860e7d86ef3f80a0ffce (patch)
tree31bf2d4d10ca493c8e51957487e07c928483cb55
parent6504496c646be5ded0318fd4663945c41bb1b02f (diff)
QBitArray: defend resize() and fromBits() against negative sizes
Use the same technique the constructor already uses: Q_ASSERT followed by selecting the no-op branch in case assertions are compiled out. Pick-to: 6.7 Change-Id: I24cbcfd686f67e060134baecfb21044948b6eb98 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--src/corelib/tools/qbitarray.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp
index 7cea2fa926..e311fee51f 100644
--- a/src/corelib/tools/qbitarray.cpp
+++ b/src/corelib/tools/qbitarray.cpp
@@ -205,7 +205,8 @@ qsizetype QBitArray::count(bool on) const
*/
void QBitArray::resize(qsizetype size)
{
- if (!size) {
+ Q_ASSERT_X(size >= 0, "QBitArray::resize", "Size must be greater than or equal to 0.");
+ if (size <= 0) {
d.resize(0);
} else {
d.resize(allocation_size(size), 0x00);
@@ -305,8 +306,9 @@ void QBitArray::fill(bool value, qsizetype begin, qsizetype end)
*/
QBitArray QBitArray::fromBits(const char *data, qsizetype size)
{
+ Q_ASSERT_X(size >= 0, "QBitArray::fromBits", "Size must be greater than or equal to 0.");
QBitArray result;
- if (size == 0)
+ if (size <= 0)
return result;
auto &d = result.d;