summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hanselmann <public@hansmi.ch>2019-04-12 00:46:49 +0200
committerUri Simchoni <uri@samba.org>2019-10-18 07:31:45 +0000
commitc4e902be7226e596d7bbba8baf4389eeab0ca8b6 (patch)
treedd6b8d44a72f8fb6a75a6539f0f2b91d7680e0b5
parentde7c78335de63f95f97f946aec287b7bb87f6b47 (diff)
downloadsamba-c4e902be7226e596d7bbba8baf4389eeab0ca8b6.tar.gz
Add fuzzing binary for ldb_parse_tree
Signed-off-by: Michael Hanselmann <public@hansmi.ch> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Uri Simchoni <uri@samba.org>
-rw-r--r--lib/fuzzing/fuzz_ldb_parse_tree.c50
-rw-r--r--lib/fuzzing/wscript_build7
2 files changed, 57 insertions, 0 deletions
diff --git a/lib/fuzzing/fuzz_ldb_parse_tree.c b/lib/fuzzing/fuzz_ldb_parse_tree.c
new file mode 100644
index 00000000000..f0f02148142
--- /dev/null
+++ b/lib/fuzzing/fuzz_ldb_parse_tree.c
@@ -0,0 +1,50 @@
+/*
+ Fuzzing for ldb_parse_tree
+ Copyright (C) Michael Hanselmann 2019
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "fuzzing/fuzzing.h"
+#include "ldb.h"
+#include "ldb_module.h"
+
+int LLVMFuzzerInitialize(int *argc, char ***argv)
+{
+ return 0;
+}
+
+int LLVMFuzzerTestOneInput(uint8_t *buf, size_t len)
+{
+ TALLOC_CTX *mem_ctx = talloc_init(__FUNCTION__);
+ struct ldb_parse_tree *tree;
+ char *filter;
+
+ if (len < 1) {
+ return 0;
+ }
+
+ filter = talloc_strndup(mem_ctx, (const char*)buf, len);
+
+ if (filter == NULL) {
+ return 0;
+ }
+
+ tree = ldb_parse_tree(mem_ctx, filter);
+
+ talloc_free(mem_ctx);
+
+ return 0;
+}
diff --git a/lib/fuzzing/wscript_build b/lib/fuzzing/wscript_build
index d035f7e1a3f..7305ce41262 100644
--- a/lib/fuzzing/wscript_build
+++ b/lib/fuzzing/wscript_build
@@ -46,3 +46,10 @@ bld.SAMBA_BINARY('fuzz_ldap_decode',
install=False,
enabled=bld.env.enable_libfuzzer,
)
+
+bld.SAMBA_BINARY('fuzz_ldb_parse_tree',
+ source='fuzz_ldb_parse_tree.c',
+ deps='fuzzing ldb',
+ install=False,
+ enabled=bld.env.enable_libfuzzer
+ )