Revision control

+ // Copyright (C) 2026 The Qt Company Ltd.
+ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+ #include <QtQuick3DUtils/private/qssgmesh_p.h>
+
+ #include <QtCore/QBuffer>
+ #include <QtCore/QByteArray>
+
+ // At fuzzing rates the warnings alone would dominate the run time.
+ static QtMessageHandler mh = qInstallMessageHandler([](QtMsgType, const QMessageLogContext &, const QString &) { });
+
+ extern "C" int LLVMFuzzerTestOneInput(const char *Data, size_t Size)
+ {
+ // No QGuiApplication: nothing on the load path needs one, and if that ever
+ // stops being true the reader has grown a dependency it should not have.
+ QByteArray blob = QByteArray::fromRawData(Data, qsizetype(Size));
+ QBuffer buffer(&blob);
+ if (!buffer.open(QIODevice::ReadOnly))
+ return 0;
+
+ // loadAll() rather than loadMesh() so that the container entry list is
+ // exercised too, not just the first mesh.
+ const QMap<quint32, QSSGMesh::Mesh> meshes = QSSGMesh::Mesh::loadAll(&buffer);
+ for (const QSSGMesh::Mesh &mesh : meshes) {
+ for (const QSSGMesh::Mesh::Subset &subset : mesh.subsets())
+ (void)subset.name.size();
+ }
+ return 0;
+ }