diff options
-rw-r--r-- | src/corelib/time/qdatetime.cpp | 4 | ||||
-rw-r--r-- | tests/auto/corelib/time/qdate/tst_qdate.cpp | 2 | ||||
-rw-r--r-- | tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp | 2 | ||||
-rw-r--r-- | tests/auto/corelib/time/qtime/tst_qtime.cpp | 4 |
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); |