diff options
author | Marc Mutz <marc.mutz@qt.io> | 2024-01-30 11:33:13 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2024-02-03 08:33:28 +0100 |
commit | a327117c0d851dac4eea860e7d86ef3f80a0ffce (patch) | |
tree | 31bf2d4d10ca493c8e51957487e07c928483cb55 | |
parent | 6504496c646be5ded0318fd4663945c41bb1b02f (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.cpp | 6 |
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; |