summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2020-04-15 14:00:05 -0300
committerThiago Macieira <thiago.macieira@intel.com>2020-04-30 04:00:47 -0700
commit2a53017df488b3cedbfbf5a56bf105b9fc5392fa (patch)
tree728b8feed3533fe93149ebc45476e2a2775c6311 /src/corelib/serialization
parent52a2505672cbb1ca8b5b32f7bc1259485c65483b (diff)
QCborValue: add an extra check against producing invalid ISO dates
By QCborValue design, we store the textual representation in ISO format, equivalent of CBOR tag 0, which isn't allowed to have negative years or beyond year 10000. Change-Id: Ibdc95e9af7bd456a94ecfffd16060ccff359c296 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r--src/corelib/serialization/qcborvalue.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp
index f5cccf1be1..30bfa367ed 100644
--- a/src/corelib/serialization/qcborvalue.cpp
+++ b/src/corelib/serialization/qcborvalue.cpp
@@ -810,10 +810,12 @@ static QCborValue::Type convertToExtendedType(QCborContainerPrivate *d)
}
if (dt.isValid()) {
QByteArray text = dt.toString(Qt::ISODateWithMs).toLatin1();
- replaceByteData(text, text.size(), Element::StringIsAscii);
- e.type = QCborValue::String;
- d->elements[0].value = qint64(QCborKnownTags::DateTimeString);
- return QCborValue::DateTime;
+ if (!text.isEmpty()) {
+ replaceByteData(text, text.size(), Element::StringIsAscii);
+ e.type = QCborValue::String;
+ d->elements[0].value = qint64(QCborKnownTags::DateTimeString);
+ return QCborValue::DateTime;
+ }
}
break;
}