summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2013-11-08 08:32:34 -0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-09 07:02:00 +0100
commit315ba388f32ad7943c226f2faba4e9b35e899dc9 (patch)
treeab657e10e194bd475a435ec9d8ce1d5303e482c2
parentf767d3a1b20b16c5e19456d3839651ffe14dd442 (diff)
Avoid signed integer overflow by making an addition a subtraction
The task has a very good explanation. The use-case was ba.remove(n, INT_MAX); since you can't pass -1 to the length, and that results in overflow when you add n+INT_MAX. Task-number: QTBUG-34694 Change-Id: I365eb86b2d0dabbe0bde67e4e7f33d64fd5793af Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r--src/corelib/tools/qbytearray.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index eb06bd4713..03b10903ab 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -1854,7 +1854,7 @@ QByteArray &QByteArray::remove(int pos, int len)
if (len <= 0 || uint(pos) >= uint(d->size))
return *this;
detach();
- if (pos + len >= d->size) {
+ if (len >= d->size - pos) {
resize(pos);
} else {
memmove(d->data() + pos, d->data() + pos + len, d->size - pos - len);