summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/time/qdatetime.cpp4
-rw-r--r--tests/auto/corelib/time/qdate/tst_qdate.cpp2
-rw-r--r--tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp2
-rw-r--r--tests/auto/corelib/time/qtime/tst_qtime.cpp4
4 files changed, 10 insertions, 2 deletions
diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp
index 98b5dc8212..c1e56ced07 100644
--- a/src/corelib/time/qdatetime.cpp
+++ b/src/corelib/time/qdatetime.cpp
@@ -229,8 +229,10 @@ static ParsedRfcDateTime rfcDateImpl(QStringView s)
QTime time;
if (words.size() && words.at(0).contains(colon)) {
const QStringView when = words.takeFirst();
- if (when[2] != colon || (when.size() == 8 ? when[5] != colon : when.size() > 5))
+ if (when.size() < 5 || when[2] != colon
+ || (when.size() == 8 ? when[5] != colon : when.size() > 5)) {
return result;
+ }
const int hour = when.left(2).toInt(&ok);
if (!ok)
return result;
diff --git a/tests/auto/corelib/time/qdate/tst_qdate.cpp b/tests/auto/corelib/time/qdate/tst_qdate.cpp
index c133ed3c76..c83aa28c20 100644
--- a/tests/auto/corelib/time/qdate/tst_qdate.cpp
+++ b/tests/auto/corelib/time/qdate/tst_qdate.cpp
@@ -1149,6 +1149,8 @@ void tst_QDate::fromStringDateFormat_data()
<< Qt::RFC2822Date << QDate(2002, 11, 1);
QTest::newRow("RFC 2822 with day date only") << QString::fromLatin1("Fri, 01 Nov 2002")
<< Qt::RFC2822Date << QDate(2002, 11, 1);
+ QTest::newRow("RFC 2822 malformed time")
+ << QString::fromLatin1("01 Nov 2002 0:") << Qt::RFC2822Date << QDate();
// Test invalid month, day, year
QTest::newRow("RFC 2822 invalid month name") << QString::fromLatin1("13 Fev 1987 13:24:51 +0100")
<< Qt::RFC2822Date << QDate();
diff --git a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
index 13176e5afc..d5fc0502d2 100644
--- a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
@@ -2508,6 +2508,8 @@ void tst_QDateTime::fromStringDateFormat_data()
<< Qt::RFC2822Date << QDateTime();
QTest::newRow("RFC 2822 with day date only") << QString::fromLatin1("Fri, 01 Nov 2002")
<< Qt::RFC2822Date << QDateTime();
+ QTest::newRow("RFC 2822 malformed time")
+ << QString::fromLatin1("01 Nov 2002 0:") << Qt::RFC2822Date << QDateTime();
// Test invalid month, day, year
QTest::newRow("RFC 2822 invalid month name") << QString::fromLatin1("13 Fev 1987 13:24:51 +0100")
<< Qt::RFC2822Date << QDateTime();
diff --git a/tests/auto/corelib/time/qtime/tst_qtime.cpp b/tests/auto/corelib/time/qtime/tst_qtime.cpp
index ce8a24515b..289a46e176 100644
--- a/tests/auto/corelib/time/qtime/tst_qtime.cpp
+++ b/tests/auto/corelib/time/qtime/tst_qtime.cpp
@@ -651,6 +651,8 @@ void tst_QTime::fromStringDateFormat_data()
<< Qt::RFC2822Date << invalidTime();
QTest::newRow("RFC 2822 with day date only") << QString::fromLatin1("Fri, 01 Nov 2002")
<< Qt::RFC2822Date << invalidTime();
+ QTest::newRow("RFC 2822 malformed time")
+ << QString::fromLatin1("01 Nov 2002 0:") << Qt::RFC2822Date << QTime();
// Test invalid month, day, year are ignored:
QTest::newRow("RFC 2822 invalid month name") << QString::fromLatin1("13 Fev 1987 13:24:51 +0100")
<< Qt::RFC2822Date << QTime(13, 24, 51);
@@ -678,7 +680,7 @@ void tst_QTime::fromStringDateFormat_data()
<< Qt::RFC2822Date << invalidTime();
// The common date text used by the "invalid character" tests, just to be
// sure *it's* not what's invalid:
- QTest::newRow("RFC 2822 invalid character at end")
+ QTest::newRow("RFC 2822 (not invalid)")
<< QString::fromLatin1("01 Jan 2012 08:00:00 +0100")
<< Qt::RFC2822Date << QTime(8, 0, 0);