summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization/qjson.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-05-05 01:00:54 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-05-05 01:00:55 +0200
commitba2b7b8e33635f29bae8e9e580b23a544de7727f (patch)
tree15514c09367f27944bd8a9198217639846e1a4b5 /src/corelib/serialization/qjson.cpp
parentaadc294f2dd1c7e94a997f5797bc83b34d2c59ff (diff)
parent43ea15d01cd491639d8cb5eb85da066f5d0a8571 (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Diffstat (limited to 'src/corelib/serialization/qjson.cpp')
-rw-r--r--src/corelib/serialization/qjson.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/corelib/serialization/qjson.cpp b/src/corelib/serialization/qjson.cpp
index e4bca3bcd0..592f6168dc 100644
--- a/src/corelib/serialization/qjson.cpp
+++ b/src/corelib/serialization/qjson.cpp
@@ -328,7 +328,7 @@ int Value::usedStorage(const Base *b) const
bool Value::isValid(const Base *b) const
{
- int offset = 0;
+ int offset = -1;
switch (type) {
case QJsonValue::Double:
if (latinOrIntValue)
@@ -345,14 +345,12 @@ bool Value::isValid(const Base *b) const
break;
}
- if (!offset)
+ if (offset == -1)
return true;
- if (offset + sizeof(uint) > b->tableOffset)
+ if (offset + sizeof(uint) > b->tableOffset || offset < (int)sizeof(Base))
return false;
int s = usedStorage(b);
- if (!s)
- return true;
if (s < 0 || s > (int)b->tableOffset - offset)
return false;
if (type == QJsonValue::Array)