Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-97777

Assertion violation in QDateTime parsing.

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Affects Version/s: 6.2.0
    • Fix Version/s: None
    • Component/s: Core: Date/Time
    • Labels:
      None
    • Environment:
      macOS 12.0.1
    • Platform/s:
      macOS
    • Commits:
      97cba363f99bec3174e305a714d4cdcabb147838 (qt/qtbase/6.2)

      Description

      In self-built Qt 6.2 on macOS I get a crash on a line:

      QDateTime::fromString("200507065922Z", "yyMMddHHmmsst")
      

      The assertion is this:

      Q_ASSERT(([data](qint64 offset) {
          return offset == data.offsetFromUtc
              // When zoneMSecs falls in a spring-forward's gap:
              || offset == data.standardTimeOffset
              // When it falls in the gap leading into double-DST:
              || offset == 2 * data.standardTimeOffset
              // When it falls in a skipped day (Pacific date-line crossings):
              || (data.offsetFromUtc - offset) % SECS_PER_DAY == 0;
      })((zoneMSecs - data.atMSecsSinceEpoch) / MSECS_PER_SEC));
      

      It shows such fields:

      • zoneMSecs = -1577923200000
      • data.atMSecsSinceEpoch = -1577937600000
      • data.offsetFromUtc = 13272
      • data.standardTimeOffset = 13272
      • data.daylightTimeOffset = 0

      This happens when reading information about X509 certificate, in:

      • X509CertificateGeneric::parse
      • QAsn1Element::toDateTime

      When reading notValidBefore and notValidAfter.

      Also, this code works in Qt 5.15.2 (because there is no such assert), but it produces a date with year 1920 in both Qt 5.15.2 and Qt 6.2 (if I comment out this assertion).

      I think this is invalid date being parsed, because UTCTime in this format should parse to 2020 year, not 1920.

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            Assignee:
            Eddy Edward Welbourne
            Reporter:
            johnpreston John Preston
            PM Owner:
            Vladimir Minenko Vladimir Minenko
            RnD Owner:
            Alex Blasche Alex Blasche
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes