Coverage Report

Created: 2026-07-30 07:17

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/kfilemetadata/build/autotests/ossfuzz/fb2extractor_fuzzer.cc
Line
Count
Source
1
/*
2
 * SPDX-FileCopyrightText: 2025 Azhar Momin <azhar.momin@kdemail.net>
3
 * SPDX-License-Identifier: LGPL-2.0-or-later
4
 */
5
6
#include <QByteArray>
7
#include <QGuiApplication>
8
#include <QMimeDatabase>
9
#include <QTemporaryFile>
10
11
#include "simpleextractionresult.h"
12
13
#include "fb2extractor.h"
14
15
static void runExtractor(const QString &fileName, const QString &mimetype)
16
4.21k
{
17
4.21k
    KFileMetaData::Fb2Extractor ex;
18
4.21k
    KFileMetaData::SimpleExtractionResult result(fileName, mimetype);
19
4.21k
    ex.extract(&result);
20
4.21k
}
21
22
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
23
30.1k
{
24
30.1k
    int argc = 0;
25
30.1k
    QGuiApplication app(argc, nullptr);
26
27
30.1k
    QByteArray b((const char *)data, size);
28
29
30.1k
    QTemporaryFile f;
30
30.1k
    if (!f.open()) {
31
0
        return 0;
32
0
    }
33
30.1k
    f.write(b);
34
30.1k
    f.close();
35
36
30.1k
    QMimeDatabase mimeDb;
37
30.1k
    QMimeType mimetype = mimeDb.mimeTypeForData(b);
38
39
30.1k
    runExtractor(f.fileName(), mimetype.name());
40
42.9k
    for (const QString &ancestor : mimetype.allAncestors()) {
41
42.9k
        if (ancestor != QLatin1String("application/octet-stream")) {
42
18.0k
            runExtractor(f.fileName(), ancestor);
43
18.0k
        }
44
42.9k
    }
45
46
30.1k
    return 0;
47
30.1k
}