aboutsummaryrefslogtreecommitdiff
path: root/subprojects/plugin_hostlist/filterlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/plugin_hostlist/filterlist.cpp')
-rw-r--r--subprojects/plugin_hostlist/filterlist.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/subprojects/plugin_hostlist/filterlist.cpp b/subprojects/plugin_hostlist/filterlist.cpp
index 42be349..a0fd414 100644
--- a/subprojects/plugin_hostlist/filterlist.cpp
+++ b/subprojects/plugin_hostlist/filterlist.cpp
@@ -6,14 +6,26 @@
* SPDX-License-Identifier: GPL-3.0
*/
-#include "filterlist.hpp"
+#include "filterlist.h"
#include <QIODevice>
#include <QTextStream>
using namespace Hostlist;
+#ifdef FUZZER
+extern "C" int LLVMFuzzerTestOneInput(const char *Data, long long Size)
+{
+ Filterlist::parseRule(QString::fromLatin1(Data, Size));
+ return 0;
+}
+#endif
+
std::map<Filterlist::DomainHash, Filterlist::Rule> Filterlist::parseRule(const QString &line)
{
+ if(line.isEmpty() || line.at(0) == '#') {
+ return {};
+ }
+
auto parts = line.trimmed().split(' ');
if(parts.size() < 2) {
return {};
@@ -36,14 +48,11 @@ bool Filterlist::load(QIODevice &from)
while(from.bytesAvailable() > 0) {
const auto line = from.readLine(512).trimmed();
- if(!line.isEmpty() && line.at(0) != '#') {
- auto r = parseRule(line);
- if(!r.empty()) {
- qDebug("merging in %lu rules", r.size());
- rules.merge(r);
- }
+ auto r = parseRule(line);
+ if(!r.empty()) {
+ qDebug("merging in %lu rules", r.size());
+ rules.merge(r);
}
}
return true;
}
-