Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libedit/TEST Add an LLVM fuzzing wrapper for the portabl...
details: https://anonhg.NetBSD.org/src/rev/23b69571e010
branches: trunk
changeset: 985828:23b69571e010
user: christos <christos%NetBSD.org@localhost>
date: Fri Sep 10 13:33:45 2021 +0000
description:
Add an LLVM fuzzing wrapper for the portable libedit (Christian Holler)
diffstat:
lib/libedit/TEST/fuzz1.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 63 insertions(+), 0 deletions(-)
diffs (67 lines):
diff -r 4ae52142fd5d -r 23b69571e010 lib/libedit/TEST/fuzz1.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/libedit/TEST/fuzz1.c Fri Sep 10 13:33:45 2021 +0000
@@ -0,0 +1,63 @@
+/*
+ * build:
+ * CC=clang CXX=clang++ CFLAGS="-fsanitize=address,fuzzer-no-link -g" \
+ * CXXFLAGS="-fsanitize=address,fuzzer-no-link -g" ./configure && make
+ * run:
+ * LD_LIBRARY_PATH=../src/.libs/ .libs/fuzz1 -max_len=32 \
+ * -use_value_profile=1 -only_ascii=1
+ */
+#include <readline/readline.h>
+#include <locale.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int init = 0;
+
+int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+ if (!Size)
+ return 0;
+
+ if (!init) {
+ setlocale(LC_CTYPE, "");
+ stifle_history(7);
+ init = 1;
+ }
+
+ clear_history();
+
+ size_t lasti = 0;
+
+ for (size_t i = 0;; ++i) {
+ if (i == Size || Data[i] == '\n') {
+ if (i - lasti) {
+ char *s = (char *)malloc(i - lasti + 1);
+ memcpy(s, &Data[lasti], i - lasti);
+ s[i - lasti] = '\0';
+
+ char *expansion;
+ int result;
+
+#ifdef DEBUG
+ fprintf(stderr, "Calling history_expand: >%s<\n", s);
+#endif
+ result = history_expand(s, &expansion);
+
+ if (result < 0 || result == 2) {
+ /* Errors ignored */
+ } else {
+ add_history(expansion);
+ }
+ free(expansion);
+ free(s);
+ }
+ lasti = i + 1;
+ }
+
+ if (i == Size)
+ break;
+ }
+
+ return 0;
+}
Home |
Main Index |
Thread Index |
Old Index