/src/kmime/autotests/ossfuzz/kmime_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 "message.h" |
7 | | |
8 | | #include <QCoreApplication> |
9 | | #include <QtEnvironmentVariables> |
10 | | |
11 | 48 | void traverseContent(KMime::Content *content) { |
12 | 48 | for (KMime::Content *c : content->contents()) { |
13 | 28 | auto decodedBody = c->decodedContent(); |
14 | 28 | auto decodedText = c->decodedText(); |
15 | | |
16 | 371 | for (const auto &header : c->headers()) { |
17 | 371 | auto headerAs7BitString = header->as7BitString(); |
18 | 371 | auto headerAsUnicodeString = header->asUnicodeString(); |
19 | 371 | } |
20 | | |
21 | 28 | traverseContent(c); |
22 | 28 | } |
23 | 48 | } |
24 | | |
25 | 20 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
26 | 20 | qputenv("QT_ENABLE_REGEXP_JIT", "1"); |
27 | | |
28 | 20 | int argc = 0; |
29 | 20 | QCoreApplication a(argc, nullptr); |
30 | | |
31 | 20 | QByteArray input((const char *)data, size); |
32 | | |
33 | 20 | KMime::Message message; |
34 | 20 | message.setContent(input); |
35 | 20 | message.parse(); |
36 | | |
37 | 20 | traverseContent(&message); |
38 | | |
39 | 20 | return 0; |
40 | 20 | } |