From 11cb25ee00ed858394fbf4103be2254ce13805e7 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Sun, 12 Feb 2023 23:31:51 +0000 Subject: [PATCH] Fuzzing: utf8, pub, and sub checks. --- fuzzing/Makefile | 2 ++ fuzzing/lib/Makefile | 29 +++++++++++++++++++++++ fuzzing/lib/lib_fuzz_pub_topic_check2.cpp | 24 +++++++++++++++++++ fuzzing/lib/lib_fuzz_sub_topic_check2.cpp | 24 +++++++++++++++++++ fuzzing/lib/lib_fuzz_utf8.cpp | 24 +++++++++++++++++++ 5 files changed, 103 insertions(+) create mode 100644 fuzzing/lib/Makefile create mode 100644 fuzzing/lib/lib_fuzz_pub_topic_check2.cpp create mode 100644 fuzzing/lib/lib_fuzz_sub_topic_check2.cpp create mode 100644 fuzzing/lib/lib_fuzz_utf8.cpp diff --git a/fuzzing/Makefile b/fuzzing/Makefile index 1428e670..7dc36914 100644 --- a/fuzzing/Makefile +++ b/fuzzing/Makefile @@ -5,6 +5,7 @@ all: zip -r corpora/db_dump_seed_corpus.zip ../test/apps/db_dump/data/ $(MAKE) -C broker $@ $(MAKE) -C db_dump $@ + $(MAKE) -C lib $@ clean: -rm -rf corpora/broker corpora/client @@ -12,3 +13,4 @@ clean: -rm -f corpora/db_dump_seed_corpus.zip $(MAKE) -C broker $@ $(MAKE) -C db_dump $@ + $(MAKE) -C lib $@ diff --git a/fuzzing/lib/Makefile b/fuzzing/lib/Makefile new file mode 100644 index 00000000..ea623828 --- /dev/null +++ b/fuzzing/lib/Makefile @@ -0,0 +1,29 @@ +R=../.. +.PHONY: all clean + +FUZZERS:= \ + lib_fuzz_pub_topic_check2 \ + lib_fuzz_sub_topic_check2 \ + lib_fuzz_utf8 + +LOCAL_CPPFLAGS:=$(CPPFLAGS) -I${R}/include/ +LOCAL_CXXFLAGS:=$(CXXFLAGS) -g -Wall -Werror -pthread +LOCAL_LDFLAGS:=$(LDFLAGS) +LOCAL_LIBADD:=$(LIBADD) $(LIB_FUZZING_ENGINE) ${R}/lib/libmosquitto.a -lssl -lcrypto + +all: $(FUZZERS) + +lib_fuzz_pub_topic_check2 : lib_fuzz_pub_topic_check2.cpp + $(CXX) $(LOCAL_CXXFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_LDFLAGS) -o $@ $^ $(LOCAL_LIBADD) + install $@ ${OUT}/$@ + +lib_fuzz_sub_topic_check2 : lib_fuzz_sub_topic_check2.cpp + $(CXX) $(LOCAL_CXXFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_LDFLAGS) -o $@ $^ $(LOCAL_LIBADD) + install $@ ${OUT}/$@ + +lib_fuzz_utf8 : lib_fuzz_utf8.cpp + $(CXX) $(LOCAL_CXXFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_LDFLAGS) -o $@ $^ $(LOCAL_LIBADD) + install $@ ${OUT}/$@ + +clean: + rm -f *.o $(FUZZERS) diff --git a/fuzzing/lib/lib_fuzz_pub_topic_check2.cpp b/fuzzing/lib/lib_fuzz_pub_topic_check2.cpp new file mode 100644 index 00000000..88bed4bb --- /dev/null +++ b/fuzzing/lib/lib_fuzz_pub_topic_check2.cpp @@ -0,0 +1,24 @@ +/* +Copyright (c) 2023 Cedalo GmbH + +All rights reserved. This program and the accompanying materials +are made available under the terms of the Eclipse Public License 2.0 +and Eclipse Distribution License v1.0 which accompany this distribution. + +The Eclipse Public License is available at + https://www.eclipse.org/legal/epl-2.0/ +and the Eclipse Distribution License is available at + http://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause + +Contributors: + Roger Light - initial implementation and documentation. +*/ +#include + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + mosquitto_pub_topic_check2((const char *)data, size); + return 0; +} diff --git a/fuzzing/lib/lib_fuzz_sub_topic_check2.cpp b/fuzzing/lib/lib_fuzz_sub_topic_check2.cpp new file mode 100644 index 00000000..329dea8d --- /dev/null +++ b/fuzzing/lib/lib_fuzz_sub_topic_check2.cpp @@ -0,0 +1,24 @@ +/* +Copyright (c) 2023 Cedalo GmbH + +All rights reserved. This program and the accompanying materials +are made available under the terms of the Eclipse Public License 2.0 +and Eclipse Distribution License v1.0 which accompany this distribution. + +The Eclipse Public License is available at + https://www.eclipse.org/legal/epl-2.0/ +and the Eclipse Distribution License is available at + http://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause + +Contributors: + Roger Light - initial implementation and documentation. +*/ +#include + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + mosquitto_sub_topic_check2((const char *)data, size); + return 0; +} diff --git a/fuzzing/lib/lib_fuzz_utf8.cpp b/fuzzing/lib/lib_fuzz_utf8.cpp new file mode 100644 index 00000000..ed39dc07 --- /dev/null +++ b/fuzzing/lib/lib_fuzz_utf8.cpp @@ -0,0 +1,24 @@ +/* +Copyright (c) 2023 Cedalo GmbH + +All rights reserved. This program and the accompanying materials +are made available under the terms of the Eclipse Public License 2.0 +and Eclipse Distribution License v1.0 which accompany this distribution. + +The Eclipse Public License is available at + https://www.eclipse.org/legal/epl-2.0/ +and the Eclipse Distribution License is available at + http://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause + +Contributors: + Roger Light - initial implementation and documentation. +*/ +#include + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + mosquitto_validate_utf8((const char *)data, size); + return 0; +}