<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/54588d0359ee9425a50e659e9b2c64a9afea76ba">https://github.com/macports/macports-ports/commit/54588d0359ee9425a50e659e9b2c64a9afea76ba</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 54588d0359e qt5-qtbase: apply security patch
</span>54588d0359e is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 54588d0359ee9425a50e659e9b2c64a9afea76ba
</span>Author: Christopher Chavez <chrischavez@gmx.us>
AuthorDate: Sun Feb 18 10:37:19 2024 -0600

<span style='display:block; white-space:pre;color:#404040;'>    qt5-qtbase: apply security patch
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Also restore consistency with upstream in existing patch
</span>---
 aqua/qt5/Portfile                              |   3 +-
 aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff |   7 +-
 aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff | 197 +++++++++++++++++++++++++
 3 files changed, 204 insertions(+), 3 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/Portfile b/aqua/qt5/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c8b7b410d86..165bd1d61af 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt5/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -214,7 +214,7 @@ array set modules {
</span>         {"Qt Core" "Qt GUI" "Qt Network" "Qt SQL" "Qt Test" "Qt Widgets" "Qt Concurrent" "Qt D-Bus" "Qt OpenGL" "Qt Platform Headers" "Qt Print Support" "Qt XML"}
         ""
         "variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 1"
</span>         "License: "
     }
     qtcharts {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1107,6 +1107,7 @@ foreach {module module_info} [array get modules] {
</span>                 CVE-2023-37369-qtbase-5.15.diff
                 CVE-2023-38197-qtbase-5.15.diff
                 CVE-2023-51714-qtbase-5.15.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                CVE-2024-25580-qtbase-5.15.diff
</span>             }
 
             # see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270715
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 1d119d332ec..2ff50916667 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -10,8 +10,11 @@
</span>      switch (header->rcode) {
      case NOERROR:
          break;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -263,15 +262,29 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -260,18 +259,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // Skip the query host, type (2 bytes) and class (2 bytes).
</span>      char host[PACKETSZ], answer[PACKETSZ];
      unsigned char *p = response + sizeof(HEADER);
 -    int status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff b/aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d310a824c78
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,197 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/gui/util/qktxhandler.cpp b/src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0d98e97453..6a79e55109 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -73,7 +73,7 @@ struct KTXHeader {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     quint32 bytesOfKeyValueData;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static const quint32 headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static constexpr quint32 qktxh_headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Currently unused, declared for future reference
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct KTXKeyValuePairItem {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,11 +103,36 @@ struct KTXMipmapLevel {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static bool qAddOverflow(quint32 v1, quint32 v2, quint32 *r) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // unsigned additions are well-defined
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    *r = v1 + v2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return v1 > quint32(v1 + v2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Returns the nearest multiple of 4 greater than or equal to 'value'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static bool nearestMultipleOf4(quint32 value, quint32 *result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    constexpr quint32 rounding = 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    *result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (qAddOverflow(value, rounding - 1, result))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    *result &= ~(rounding - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Returns a slice with prechecked bounds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static QByteArray safeSlice(const QByteArray& array, quint32 start, quint32 length)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    Q_UNUSED(suffix)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    quint32 end = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (qAddOverflow(start, length, &end) || end > quint32(array.length()))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return QByteArray(array.data() + start, length);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return (qstrncmp(block.constData(), ktxIdentifier, KTX_IDENTIFIER_LENGTH) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Q_UNUSED(suffix);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return block.startsWith(QByteArray::fromRawData(ktxIdentifier, KTX_IDENTIFIER_LENGTH));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -115,42 +140,97 @@ QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!device())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    QByteArray buf = device()->readAll();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    const quint32 dataSize = quint32(buf.size());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (dataSize < headerSize || !canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        qCDebug(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const QByteArray buf = device()->readAll();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (size_t(buf.size()) > std::numeric_limits<quint32>::max()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Too big KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (buf.size() < qsizetype(qktxh_headerSize)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Invalid KTX header size in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    const KTXHeader *header = reinterpret_cast<const KTXHeader *>(buf.constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (!checkHeader(*header)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        qCDebug(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    KTXHeader header;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    memcpy(&header, buf.data(), qktxh_headerSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!checkHeader(header)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QTextureFileData texData;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     texData.setData(buf);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    texData.setSize(QSize(decode(header->pixelWidth), decode(header->pixelHeight)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    texData.setGLFormat(decode(header->glFormat));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    texData.setGLInternalFormat(decode(header->glInternalFormat));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    texData.setGLBaseInternalFormat(decode(header->glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    texData.setNumLevels(decode(header->numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    quint32 offset = headerSize + decode(header->bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    const int maxLevels = qMin(texData.numLevels(), 32);               // Cap iterations in case of corrupt file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    for (int i = 0; i < maxLevels; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if (offset + sizeof(KTXMipmapLevel) > dataSize)                // Corrupt file; avoid oob read
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        const KTXMipmapLevel *level = reinterpret_cast<const KTXMipmapLevel *>(buf.constData() + offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        quint32 levelLen = decode(level->imageSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        texData.setDataOffset(offset + sizeof(KTXMipmapLevel::imageSize), i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        texData.setDataLength(levelLen, i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        offset += sizeof(KTXMipmapLevel::imageSize) + levelLen + (3 - ((levelLen + 3) % 4));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    texData.setSize(QSize(decode(header.pixelWidth), decode(header.pixelHeight)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    texData.setGLFormat(decode(header.glFormat));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    texData.setGLInternalFormat(decode(header.glInternalFormat));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    texData.setGLBaseInternalFormat(decode(header.glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    texData.setNumLevels(decode(header.numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const quint32 bytesOfKeyValueData = decode(header.bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    quint32 headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (qAddOverflow(qktxh_headerSize, bytesOfKeyValueData, &headerKeyValueSize)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Overflow in size of key value data in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                 logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (headerKeyValueSize >= quint32(buf.size())) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Technically, any number of levels is allowed but if the value is bigger than
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // what is possible in KTX V2 (and what makes sense) we return an error.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // maxLevels = log2(max(width, height, depth))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const int maxLevels = (sizeof(quint32) * 8)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            - qCountLeadingZeroBits(std::max(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    { header.pixelWidth, header.pixelHeight, header.pixelDepth }));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (texData.numLevels() > maxLevels) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Too many levels in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    quint32 offset = headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int level = 0; level < texData.numLevels(); level++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const auto imageSizeSlice = safeSlice(buf, offset, sizeof(quint32));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (imageSizeSlice.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const quint32 imageSize = decode(qFromUnaligned<quint32>(imageSizeSlice.data()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        offset += sizeof(quint32); // overflow checked indirectly above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        texData.setDataOffset(offset, level);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        texData.setDataLength(imageSize, level);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        // Add image data and padding to offset
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        quint32 padded = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (nearestMultipleOf4(imageSize, &padded)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            qWarning(lcQtGuiTextureIO, "Overflow in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        quint32 offsetNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (qAddOverflow(offset, padded, &offsetNext)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        offset = offsetNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!texData.isValid()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        qCDebug(lcQtGuiTextureIO, "Invalid values in header of KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        qWarning(lcQtGuiTextureIO, "Invalid values in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                 logName().constData());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -191,7 +271,7 @@ bool QKtxHandler::checkHeader(const KTXHeader &header)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             (decode(header.numberOfFaces) == 1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-quint32 QKtxHandler::decode(quint32 val)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++quint32 QKtxHandler::decode(quint32 val) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return inverseEndian ? qbswap<quint32>(val) : val;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/gui/util/qktxhandler_p.h b/src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f831e59d95..cdf1b2eaf8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -68,7 +68,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool checkHeader(const KTXHeader &header);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    quint32 decode(quint32 val);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    quint32 decode(quint32 val) const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool inverseEndian = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span></pre><pre style='margin:0'>

</pre>