summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Swiecki <robert@swiecki.net>2018-01-06 00:42:48 +0100
committerRobert Swiecki <robert@swiecki.net>2018-01-06 00:42:48 +0100
commit79cc04ef167391e49e1d17979148dcc2514d7a23 (patch)
tree591a6c7958c3e03689f88a9bc2c352076cb06ecb
parent74073e30d2458364e372af5e71a7530641fc7583 (diff)
parent93bf1988b5e5a31ff303f2386411ebe17a35d1da (diff)
downloadhonggfuzz-79cc04ef167391e49e1d17979148dcc2514d7a23.tar.gz
Merge branch 'master' of ssh://github.com/google/honggfuzz
-rw-r--r--Makefile146
-rw-r--r--cmdline.c8
-rw-r--r--cmdline.h2
-rw-r--r--display.c6
-rw-r--r--fuzz.c8
-rw-r--r--hfuzz_cc/hfuzz-cc.c8
-rw-r--r--honggfuzz.c8
-rw-r--r--honggfuzz.h2
l---------includes/libcommon1
l---------includes/libhfcommon1
l---------includes/libhfnetdriver1
-rw-r--r--input.c8
-rw-r--r--libhfcommon/common.h (renamed from libcommon/common.h)28
-rw-r--r--libhfcommon/files.c (renamed from libcommon/files.c)8
-rw-r--r--libhfcommon/files.h (renamed from libcommon/files.h)7
-rw-r--r--libhfcommon/log.c (renamed from libcommon/log.c)6
-rw-r--r--libhfcommon/log.h (renamed from libcommon/log.h)9
-rw-r--r--libhfcommon/ns.c (renamed from libcommon/ns.c)8
-rw-r--r--libhfcommon/ns.h (renamed from libcommon/ns.h)0
-rw-r--r--libhfcommon/util.c (renamed from libcommon/util.c)8
-rw-r--r--libhfcommon/util.h (renamed from libcommon/util.h)6
-rw-r--r--libhfnetdriver/netdriver.c (renamed from libnetdriver/netdriver.c)130
-rw-r--r--libhfnetdriver/netdriver.h14
-rw-r--r--libhfuzz/instrument.c6
-rw-r--r--libhfuzz/linux.c8
-rw-r--r--libhfuzz/persistent.c6
-rw-r--r--linux/arch.c10
-rw-r--r--linux/bfd.c8
-rw-r--r--linux/perf.c8
-rw-r--r--linux/pt.c6
-rw-r--r--linux/trace.c8
-rw-r--r--linux/unwind.c4
-rw-r--r--mac/arch.c8
-rw-r--r--mangle.c6
-rw-r--r--posix/arch.c8
-rw-r--r--report.c6
-rw-r--r--sancov.c8
-rw-r--r--sanitizers.c10
-rw-r--r--subproc.c8
39 files changed, 279 insertions, 262 deletions
diff --git a/Makefile b/Makefile
index 9854fe1c..7de54390 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,7 @@ BIN := honggfuzz
HFUZZ_CC_BINS := hfuzz_cc/hfuzz-clang hfuzz_cc/hfuzz-clang++ hfuzz_cc/hfuzz-gcc hfuzz_cc/hfuzz-g++
HFUZZ_CC_SRCS := hfuzz_cc/hfuzz-cc.c
COMMON_CFLAGS := -D_GNU_SOURCE -Wall -Werror -Wframe-larger-than=131072 -Wno-format-truncation -I.
-COMMON_LDFLAGS := -lm libcommon/libcommon.a
+COMMON_LDFLAGS := -lm libhfcommon/libhfcommon.a
COMMON_SRCS := $(sort $(wildcard *.c))
CFLAGS ?= -O3
LDFLAGS ?=
@@ -165,13 +165,13 @@ LHFUZZ_OBJS := $(LHFUZZ_SRCS:.c=.o)
LHFUZZ_ARCH := libhfuzz/libhfuzz.a
HFUZZ_INC ?= $(shell pwd)
-LCOMMON_SRCS := $(wildcard libcommon/*.c)
+LCOMMON_SRCS := $(wildcard libhfcommon/*.c)
LCOMMON_OBJS := $(LCOMMON_SRCS:.c=.o)
-LCOMMON_ARCH := libcommon/libcommon.a
+LCOMMON_ARCH := libhfcommon/libhfcommon.a
-LNETDRIVER_SRCS := $(wildcard libnetdriver/*.c)
+LNETDRIVER_SRCS := $(wildcard libhfnetdriver/*.c)
LNETDRIVER_OBJS := $(LNETDRIVER_SRCS:.c=.o)
-LNETDRIVER_ARCH := libnetdriver/libnetdriver.a
+LNETDRIVER_ARCH := libhfnetdriver/libhfnetdriver.a
# Respect external user defines
CFLAGS += $(COMMON_CFLAGS) $(ARCH_CFLAGS) -D_HF_ARCH_${ARCH}
@@ -239,7 +239,7 @@ else
endif
endif
-SUBDIR_ROOTS := linux mac posix libhfuzz libcommon
+SUBDIR_ROOTS := linux mac posix libhfuzz libhfcommon libhfnetdriver
DIRS := . $(shell find $(SUBDIR_ROOTS) -type d)
CLEAN_PATTERNS := *.o *~ core *.a *.dSYM *.la *.so *.dylib
SUBDIR_GARBAGE := $(foreach DIR,$(DIRS),$(addprefix $(DIR)/,$(CLEAN_PATTERNS)))
@@ -350,67 +350,75 @@ android-clean-deps:
# DO NOT DELETE
-cmdline.o: cmdline.h honggfuzz.h libcommon/util.h libcommon/common.h
-cmdline.o: libcommon/files.h libcommon/common.h libcommon/log.h
-display.o: display.h honggfuzz.h libcommon/util.h libcommon/common.h
-display.o: libcommon/log.h libcommon/common.h
-fuzz.o: fuzz.h honggfuzz.h libcommon/util.h arch.h input.h libcommon/common.h
-fuzz.o: libcommon/files.h libcommon/common.h libcommon/log.h mangle.h
-fuzz.o: report.h sancov.h sanitizers.h subproc.h
-honggfuzz.o: cmdline.h honggfuzz.h libcommon/util.h libcommon/common.h
-honggfuzz.o: display.h fuzz.h input.h libcommon/files.h libcommon/common.h
-honggfuzz.o: libcommon/log.h
-input.o: input.h honggfuzz.h libcommon/util.h libcommon/common.h
-input.o: libcommon/files.h libcommon/common.h libcommon/log.h
-mangle.o: mangle.h honggfuzz.h libcommon/util.h libcommon/common.h
-mangle.o: libcommon/log.h libcommon/common.h
-report.o: report.h honggfuzz.h libcommon/util.h libcommon/common.h
-report.o: libcommon/log.h libcommon/common.h
-sancov.o: sancov.h honggfuzz.h libcommon/util.h libcommon/common.h
-sancov.o: libcommon/files.h libcommon/common.h libcommon/log.h sanitizers.h
-sanitizers.o: sanitizers.h honggfuzz.h libcommon/util.h libcommon/common.h
-sanitizers.o: libcommon/files.h libcommon/common.h libcommon/log.h
-subproc.o: subproc.h honggfuzz.h libcommon/util.h arch.h fuzz.h
-subproc.o: libcommon/common.h libcommon/files.h libcommon/common.h
-subproc.o: libcommon/log.h
-hfuzz_cc/hfuzz-cc.o: honggfuzz.h libcommon/util.h libcommon/common.h
-hfuzz_cc/hfuzz-cc.o: libcommon/files.h libcommon/common.h libcommon/log.h
-libcommon/files.o: libcommon/files.h libcommon/common.h libcommon/log.h
-libcommon/files.o: libcommon/util.h
-libcommon/log.o: libcommon/log.h libcommon/common.h libcommon/util.h
-libcommon/ns.o: libcommon/ns.h libcommon/common.h libcommon/files.h
-libcommon/ns.o: libcommon/log.h
-libcommon/util.o: libcommon/util.h libcommon/common.h libcommon/files.h
-libcommon/util.o: libcommon/log.h
-libhfuzz/instrument.o: libhfuzz/instrument.h honggfuzz.h libcommon/util.h
-libhfuzz/instrument.o: libcommon/common.h libcommon/log.h libcommon/common.h
-libhfuzz/linux.o: libcommon/common.h libhfuzz/libhfuzz.h libcommon/files.h
-libhfuzz/linux.o: libcommon/common.h libcommon/log.h libcommon/ns.h
+cmdline.o: cmdline.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+cmdline.o: libhfcommon/files.h libhfcommon/common.h libhfcommon/log.h
+display.o: display.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+display.o: libhfcommon/log.h
+fuzz.o: fuzz.h honggfuzz.h libhfcommon/util.h arch.h input.h
+fuzz.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+fuzz.o: libhfcommon/log.h mangle.h report.h sancov.h sanitizers.h subproc.h
+honggfuzz.o: cmdline.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+honggfuzz.o: display.h fuzz.h input.h libhfcommon/files.h
+honggfuzz.o: libhfcommon/common.h libhfcommon/log.h
+input.o: input.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+input.o: libhfcommon/files.h libhfcommon/common.h libhfcommon/log.h
+mangle.o: mangle.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+mangle.o: libhfcommon/log.h
+report.o: report.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+report.o: libhfcommon/log.h
+sancov.o: sancov.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+sancov.o: libhfcommon/files.h libhfcommon/common.h libhfcommon/log.h
+sancov.o: sanitizers.h
+sanitizers.o: sanitizers.h honggfuzz.h libhfcommon/util.h
+sanitizers.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+sanitizers.o: libhfcommon/log.h
+subproc.o: subproc.h honggfuzz.h libhfcommon/util.h arch.h fuzz.h
+subproc.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+subproc.o: libhfcommon/log.h
+hfuzz_cc/hfuzz-cc.o: honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+hfuzz_cc/hfuzz-cc.o: libhfcommon/files.h libhfcommon/common.h
+hfuzz_cc/hfuzz-cc.o: libhfcommon/log.h
+libhfcommon/files.o: libhfcommon/files.h libhfcommon/common.h
+libhfcommon/files.o: libhfcommon/common.h libhfcommon/log.h
+libhfcommon/files.o: libhfcommon/util.h
+libhfcommon/log.o: libhfcommon/log.h libhfcommon/common.h libhfcommon/util.h
+libhfcommon/ns.o: libhfcommon/ns.h libhfcommon/common.h libhfcommon/files.h
+libhfcommon/ns.o: libhfcommon/common.h libhfcommon/log.h
+libhfcommon/util.o: libhfcommon/util.h libhfcommon/common.h
+libhfcommon/util.o: libhfcommon/files.h libhfcommon/common.h
+libhfcommon/util.o: libhfcommon/log.h
+libhfnetdriver/netdriver.o: libhfcommon/common.h libhfcommon/log.h
+libhfnetdriver/netdriver.o: libhfcommon/ns.h
+libhfuzz/instrument.o: libhfuzz/instrument.h honggfuzz.h libhfcommon/util.h
+libhfuzz/instrument.o: libhfcommon/common.h libhfcommon/log.h
+libhfuzz/linux.o: libhfcommon/common.h libhfuzz/libhfuzz.h
+libhfuzz/linux.o: libhfcommon/files.h libhfcommon/common.h libhfcommon/log.h
+libhfuzz/linux.o: libhfcommon/ns.h
libhfuzz/memorycmp.o: libhfuzz/instrument.h
-libhfuzz/persistent.o: libhfuzz/libhfuzz.h honggfuzz.h libcommon/util.h
-libhfuzz/persistent.o: libcommon/common.h libcommon/files.h
-libhfuzz/persistent.o: libcommon/common.h libcommon/log.h
-libnetdriver/netdriver.o: libcommon/common.h libcommon/log.h
-libnetdriver/netdriver.o: libcommon/common.h libcommon/ns.h
-linux/arch.o: arch.h honggfuzz.h libcommon/util.h fuzz.h libcommon/common.h
-linux/arch.o: libcommon/files.h libcommon/common.h libcommon/log.h
-linux/arch.o: libcommon/ns.h linux/perf.h linux/trace.h sancov.h sanitizers.h
-linux/arch.o: subproc.h
-linux/bfd.o: linux/bfd.h linux/unwind.h honggfuzz.h libcommon/util.h
-linux/bfd.o: libcommon/common.h libcommon/files.h libcommon/common.h
-linux/bfd.o: libcommon/log.h
-linux/perf.o: linux/perf.h honggfuzz.h libcommon/util.h libcommon/common.h
-linux/perf.o: libcommon/files.h libcommon/common.h libcommon/log.h linux/pt.h
-linux/pt.o: libcommon/common.h libcommon/log.h libcommon/common.h
-linux/pt.o: libcommon/util.h linux/pt.h honggfuzz.h
-linux/trace.o: linux/trace.h honggfuzz.h libcommon/util.h libcommon/common.h
-linux/trace.o: libcommon/files.h libcommon/common.h libcommon/log.h
-linux/trace.o: linux/bfd.h linux/unwind.h sancov.h sanitizers.h subproc.h
-linux/unwind.o: linux/unwind.h honggfuzz.h libcommon/util.h
-linux/unwind.o: libcommon/common.h libcommon/log.h libcommon/common.h
-mac/arch.o: arch.h honggfuzz.h libcommon/util.h libcommon/common.h
-mac/arch.o: libcommon/files.h libcommon/common.h libcommon/log.h sancov.h
-mac/arch.o: subproc.h
-posix/arch.o: arch.h honggfuzz.h libcommon/util.h fuzz.h libcommon/common.h
-posix/arch.o: libcommon/files.h libcommon/common.h libcommon/log.h sancov.h
-posix/arch.o: subproc.h
+libhfuzz/persistent.o: libhfuzz/libhfuzz.h honggfuzz.h libhfcommon/util.h
+libhfuzz/persistent.o: libhfcommon/common.h libhfcommon/files.h
+libhfuzz/persistent.o: libhfcommon/common.h libhfcommon/log.h
+linux/arch.o: arch.h honggfuzz.h libhfcommon/util.h fuzz.h
+linux/arch.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+linux/arch.o: libhfcommon/log.h libhfcommon/ns.h linux/perf.h linux/trace.h
+linux/arch.o: sancov.h sanitizers.h subproc.h
+linux/bfd.o: linux/bfd.h linux/unwind.h honggfuzz.h libhfcommon/util.h
+linux/bfd.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+linux/bfd.o: libhfcommon/log.h
+linux/perf.o: linux/perf.h honggfuzz.h libhfcommon/util.h
+linux/perf.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+linux/perf.o: libhfcommon/log.h linux/pt.h
+linux/pt.o: libhfcommon/common.h libhfcommon/log.h libhfcommon/util.h
+linux/pt.o: linux/pt.h honggfuzz.h
+linux/trace.o: linux/trace.h honggfuzz.h libhfcommon/util.h
+linux/trace.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+linux/trace.o: libhfcommon/log.h linux/bfd.h linux/unwind.h sancov.h
+linux/trace.o: sanitizers.h subproc.h
+linux/unwind.o: linux/unwind.h honggfuzz.h libhfcommon/util.h
+linux/unwind.o: libhfcommon/common.h libhfcommon/log.h
+mac/arch.o: arch.h honggfuzz.h libhfcommon/util.h libhfcommon/common.h
+mac/arch.o: libhfcommon/files.h libhfcommon/common.h libhfcommon/log.h
+mac/arch.o: sancov.h subproc.h
+posix/arch.o: arch.h honggfuzz.h libhfcommon/util.h fuzz.h
+posix/arch.o: libhfcommon/common.h libhfcommon/files.h libhfcommon/common.h
+posix/arch.o: libhfcommon/log.h sancov.h subproc.h
diff --git a/cmdline.c b/cmdline.c
index 25b36da9..8cac4f91 100644
--- a/cmdline.c
+++ b/cmdline.c
@@ -39,10 +39,10 @@
#include <sys/types.h>
#include <unistd.h>
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
struct custom_option {
struct option opt;
diff --git a/cmdline.h b/cmdline.h
index 2c998a2f..0688d278 100644
--- a/cmdline.h
+++ b/cmdline.h
@@ -26,7 +26,7 @@
#include <sys/time.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
+#include "libhfcommon/common.h"
rlim_t cmdlineParseRLimit(int res, const char* optarg, unsigned long mul);
diff --git a/display.c b/display.c
index 48a0ebcd..7fd1eec8 100644
--- a/display.c
+++ b/display.c
@@ -33,9 +33,9 @@
#include <string.h>
#include <unistd.h>
-#include "libcommon/common.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#define ESC_CLEAR_ALL "\033[2J"
#define ESC_CLEAR_LINE "\033[2K"
diff --git a/fuzz.c b/fuzz.c
index 98878c15..e516ff85 100644
--- a/fuzz.c
+++ b/fuzz.c
@@ -47,10 +47,10 @@
#include "arch.h"
#include "honggfuzz.h"
#include "input.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "mangle.h"
#include "report.h"
#include "sancov.h"
diff --git a/hfuzz_cc/hfuzz-cc.c b/hfuzz_cc/hfuzz-cc.c
index ca0e822a..ff26670e 100644
--- a/hfuzz_cc/hfuzz-cc.c
+++ b/hfuzz_cc/hfuzz-cc.c
@@ -13,10 +13,10 @@
#include <unistd.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#define ARGS_MAX 4096
#define __XSTR(x) #x
diff --git a/honggfuzz.c b/honggfuzz.c
index 9b6ffa86..817aec28 100644
--- a/honggfuzz.c
+++ b/honggfuzz.c
@@ -37,10 +37,10 @@
#include "display.h"
#include "fuzz.h"
#include "input.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
static int sigReceived = 0;
diff --git a/honggfuzz.h b/honggfuzz.h
index a6c99ee5..d5d9b929 100644
--- a/honggfuzz.h
+++ b/honggfuzz.h
@@ -35,7 +35,7 @@
#include <sys/types.h>
#include <time.h>
-#include "libcommon/util.h"
+#include "libhfcommon/util.h"
#define PROG_NAME "honggfuzz"
#define PROG_VERSION "1.3"
diff --git a/includes/libcommon b/includes/libcommon
deleted file mode 120000
index 7e124537..00000000
--- a/includes/libcommon
+++ /dev/null
@@ -1 +0,0 @@
-../libcommon \ No newline at end of file
diff --git a/includes/libhfcommon b/includes/libhfcommon
new file mode 120000
index 00000000..319088a7
--- /dev/null
+++ b/includes/libhfcommon
@@ -0,0 +1 @@
+../libhfcommon \ No newline at end of file
diff --git a/includes/libhfnetdriver b/includes/libhfnetdriver
new file mode 120000
index 00000000..76faef68
--- /dev/null
+++ b/includes/libhfnetdriver
@@ -0,0 +1 @@
+../libhfnetdriver \ No newline at end of file
diff --git a/input.c b/input.c
index 98be8199..2aa3fafe 100644
--- a/input.c
+++ b/input.c
@@ -37,8 +37,8 @@
#include <sys/types.h>
#include <unistd.h>
-#include "libcommon/common.h"
-#include "libcommon/files.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
#if defined(_HF_ARCH_LINUX)
#include <sys/syscall.h>
@@ -47,8 +47,8 @@
#endif /* defined(__NR_memfd_create) */
#endif /* defined(_HF_ARCH_LINUX) */
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
static bool input_getDirStatsAndRewind(honggfuzz_t* hfuzz) {
rewinddir(hfuzz->io.inputDirPtr);
diff --git a/libcommon/common.h b/libhfcommon/common.h
index c5767f70..6423548c 100644
--- a/libcommon/common.h
+++ b/libhfcommon/common.h
@@ -24,25 +24,31 @@
#ifndef _HF_COMMON_H_
#define _HF_COMMON_H_
-#include <dirent.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <pthread.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <sys/param.h>
-#include <sys/queue.h>
-#include <sys/types.h>
-#include <time.h>
+#include <stdlib.h>
+#include <unistd.h>
#ifndef UNUSED
#define UNUSED __attribute__((unused))
-#endif
+#endif /* ifndef UNUSED */
+#ifndef ARRAYSIZE
#define ARRAYSIZE(x) (sizeof(x) / sizeof(*x))
+#endif /* ifndef ARRAYSIZE */
/* Memory barriers */
#define rmb() __asm__ __volatile__("" ::: "memory")
#define wmb() __sync_synchronize()
+/* TEMP_FAILURE_RETRY, but for all OSes */
+#ifndef TEMP_FAILURE_RETRY
+#define TEMP_FAILURE_RETRY(exp) \
+ ({ \
+ typeof(exp) _rc; \
+ do { \
+ _rc = (exp); \
+ } while (_rc == -1 && errno == EINTR); \
+ _rc; \
+ })
+#endif /* ifndef TEMP_FAILURE_RETRY */
+
#endif /* ifndef _HF_COMMON_H_ */
diff --git a/libcommon/files.c b/libhfcommon/files.c
index 388b9f47..7dab9920 100644
--- a/libcommon/files.c
+++ b/libhfcommon/files.c
@@ -21,8 +21,7 @@
*
*/
-#include "files.h"
-#include "common.h"
+#include "libhfcommon/files.h"
#include <dirent.h>
#include <errno.h>
@@ -41,8 +40,9 @@
#include <sys/types.h>
#include <unistd.h>
-#include "log.h"
-#include "util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
ssize_t files_readFileToBufMax(char* fileName, uint8_t* buf, size_t fileMaxSz) {
int fd = open(fileName, O_RDONLY | O_CLOEXEC);
diff --git a/libcommon/files.h b/libhfcommon/files.h
index 4976c236..674941fc 100644
--- a/libcommon/files.h
+++ b/libhfcommon/files.h
@@ -21,11 +21,12 @@
*
*/
-#ifndef _HF_FILES_H_
-#define _HF_FILES_H_
+#ifndef _HF_COMMON_FILES_H_
+#define _HF_COMMON_FILES_H_
#include "common.h"
+#include <stdbool.h>
#include <stdint.h>
#include <unistd.h>
@@ -63,4 +64,4 @@ extern bool files_readPidFromFile(const char* fileName, pid_t* pidPtr);
extern size_t files_parseSymbolFilter(const char* inFIle, char*** filterList);
-#endif
+#endif /* ifndef HF_COMMON_FILES */
diff --git a/libcommon/log.c b/libhfcommon/log.c
index 471d772c..2e627728 100644
--- a/libcommon/log.c
+++ b/libhfcommon/log.c
@@ -19,8 +19,7 @@
*/
-#include "log.h"
-#include "common.h"
+#include "libhfcommon/log.h"
#include <errno.h>
#include <fcntl.h>
@@ -36,7 +35,8 @@
#include <time.h>
#include <unistd.h>
-#include "util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/util.h"
#if defined(_HF_ARCH_LINUX)
#include <sys/syscall.h>
diff --git a/libcommon/log.h b/libhfcommon/log.h
index a41255a8..a6c8706d 100644
--- a/libcommon/log.h
+++ b/libhfcommon/log.h
@@ -19,15 +19,12 @@
*
*/
-#ifndef _HF_LOG_H_
-#define _HF_LOG_H_
+#ifndef _HF_COMMON_LOG_H_
+#define _HF_COMMON_LOG_H_
-#include <getopt.h>
#include <pthread.h>
#include <stdbool.h>
-#include "common.h"
-
enum llevel_t { FATAL = 0, ERROR, WARNING, INFO, DEBUG, HELP, HELP_BOLD };
extern enum llevel_t log_level;
@@ -92,4 +89,4 @@ extern pthread_mutex_t* logMutexGet(void);
void logMutexReset(void);
-#endif /* _HF_LOG_H_ */
+#endif /* ifndef _HF_COMMON_LOG_H_ */
diff --git a/libcommon/ns.c b/libhfcommon/ns.c
index cbfcb745..25c25f90 100644
--- a/libcommon/ns.c
+++ b/libhfcommon/ns.c
@@ -21,11 +21,11 @@
*
*/
-#include "ns.h"
-#include "common.h"
+#include "libhfcommon/ns.h"
-#include "files.h"
-#include "log.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
#if defined(_HF_ARCH_LINUX)
diff --git a/libcommon/ns.h b/libhfcommon/ns.h
index 882f7547..882f7547 100644
--- a/libcommon/ns.h
+++ b/libhfcommon/ns.h
diff --git a/libcommon/util.c b/libhfcommon/util.c
index b3ceb6ea..5745a4b2 100644
--- a/libcommon/util.c
+++ b/libhfcommon/util.c
@@ -21,8 +21,7 @@
*
*/
-#include "util.h"
-#include "common.h"
+#include "libhfcommon/util.h"
#include <ctype.h>
#include <fcntl.h>
@@ -41,8 +40,9 @@
#include <time.h>
#include <unistd.h>
-#include "files.h"
-#include "log.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
void* util_Malloc(size_t sz) {
void* p = malloc(sz);
diff --git a/libcommon/util.h b/libhfcommon/util.h
index 76cacdb1..26fe6e66 100644
--- a/libcommon/util.h
+++ b/libhfcommon/util.h
@@ -21,8 +21,8 @@
*
*/
-#ifndef _HF_UTIL_H_
-#define _HF_UTIL_H_
+#ifndef _HF_COMMON_UTIL_H_
+#define _HF_COMMON_UTIL_H_
#include <pthread.h>
#include <stdarg.h>
@@ -122,4 +122,4 @@ extern size_t util_decodeCString(char* s);
extern uint64_t util_CRC64(const uint8_t* buf, size_t len);
extern uint64_t util_CRC64Rev(const uint8_t* buf, size_t len);
-#endif
+#endif /* ifndef _HF_COMMON_UTIL_H_ */
diff --git a/libnetdriver/netdriver.c b/libhfnetdriver/netdriver.c
index 93bd1797..f096d679 100644
--- a/libnetdriver/netdriver.c
+++ b/libhfnetdriver/netdriver.c
@@ -13,40 +13,37 @@
#include <sched.h>
#endif /* defined(_HF_ARCH_LINUX) */
-#include "libcommon/common.h"
-#include "libcommon/log.h"
-#include "libcommon/ns.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/ns.h"
#define HF_TCP_PORT_ENV "_HF_TCP_PORT"
-static uint16_t tcp_port = 8080;
-
-int argc_server = 0;
-char **argv_server = NULL;
-
-static void *netDriver_getSymbol(const char *func) {
- dlerror(); /* Clear existing errors */
- void *f = dlsym(RTLD_DEFAULT, func);
- char *error = dlerror();
- if (f == NULL && error != NULL) {
- LOG_D("Couldn't find function '%s': %s", func, error);
- return NULL;
- }
- return f;
-}
+static struct {
+ uint16_t tcp_port;
+ int argc_server;
+ char **argv_server;
+} hfnd_globals = {
+ .tcp_port = 8080,
+ .argc_server = 0,
+ .argv_server = NULL,
+};
static void *netDriver_mainProgram(void *unused UNUSED) {
- int (*f)(int argc, char **argv) = netDriver_getSymbol("fuzzing_main");
- if (f == NULL) {
- /* FIXME: This can find libfuzzer's main() as well */
- f = netDriver_getSymbol("main");
- }
- if (f == NULL) {
- LOG_F("Couldn't find symbol address for the 'fuzzing_main' or 'main' functions");
- }
- int ret = f(argc_server, argv_server);
- LOG_I("Honggfuzz Net Driver (pid=%d): original main() function exited with: %d", (int)getpid(),
- ret);
+ __attribute__((weak)) int HonggfuzzNetDriver_main(int argc, char **argv);
+ __attribute__((weak)) int _Z23HonggfuzzNetDriver_mainiPPc(
+ int argc, char **argv); /* C++ version */
+
+ int ret = 0;
+ if (HonggfuzzNetDriver_main) {
+ ret = HonggfuzzNetDriver_main(hfnd_globals.argc_server, hfnd_globals.argv_server);
+ } else if (_Z23HonggfuzzNetDriver_mainiPPc) {
+ ret = _Z23HonggfuzzNetDriver_mainiPPc(hfnd_globals.argc_server, hfnd_globals.argv_server);
+ } else {
+ LOG_F("'int HonggfuzzNetDriver_main(int argc, char **argv)' wasn't defined in the code");
+ }
+ LOG_I("Honggfuzz Net Driver (pid=%d): HonggfuzzNetDriver_main() function exited with: %d",
+ (int)getpid(), ret);
_exit(ret);
}
@@ -58,7 +55,9 @@ static void netDriver_startOriginalProgramInThread(void) {
pthread_attr_setstacksize(&attr, 1024 * 1024 * 8);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- pthread_create(&t, &attr, netDriver_mainProgram, NULL);
+ if (pthread_create(&t, &attr, netDriver_mainProgram, NULL) != 0) {
+ PLOG_F("Couldn't create the 'netDriver_mainProgram' thread");
+ }
}
static void netDriver_initNs(void) {
@@ -96,10 +95,7 @@ int netDriver_sockConn(uint16_t portno) {
saddr.sin_family = AF_INET;
saddr.sin_port = htons(portno);
saddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- while (connect(sock, (const struct sockaddr *)&saddr, sizeof(saddr)) == -1) {
- if (errno == EINTR) {
- continue;
- }
+ if (TEMP_FAILURE_RETRY(connect(sock, (const struct sockaddr *)&saddr, sizeof(saddr))) == -1) {
PLOG_W("connect('127.0.0.1:%" PRIu16 ")", portno);
return -1;
}
@@ -114,9 +110,24 @@ int netDriver_sockConn(uint16_t portno) {
__attribute__((weak)) uint16_t HonggfuzzNetDriverPort(int argc UNUSED, char **argv UNUSED) {
const char *port_str = getenv(HF_TCP_PORT_ENV);
if (port_str == NULL) {
- return tcp_port;
+ return hfnd_globals.tcp_port;
+ }
+ errno = 0;
+ signed long portsl = strtol(port_str, NULL, 0);
+ if (errno != 0) {
+ PLOG_F("Couldn't convert '%s'='%s' to a number", HF_TCP_PORT_ENV, port_str);
+ }
+
+ if (portsl < 1) {
+ LOG_F(
+ "Specified TCP port '%s'='%s' (%ld) cannot be < 1", HF_TCP_PORT_ENV, port_str, portsl);
+ }
+ if (portsl > 65535) {
+ LOG_F("Specified TCP port '%s'='%s' (%ld) cannot be > 65535", HF_TCP_PORT_ENV, port_str,
+ portsl);
}
- return (uint16_t)atoi(port_str);
+
+ return (uint16_t)portsl;
}
/*
@@ -133,8 +144,6 @@ __attribute__((weak)) int HonggfuzzNetDriverArgsForServer(
int argc, char **argv, int *server_argc, char ***server_argv) {
for (int i = 0; i < argc; i++) {
if (strcmp(argv[i], "--") == 0) {
- argv[i] = argv[0]; /* Change '--' into argv[0], as it's the new argv[0] for the TCP
- server program */
*server_argc = argc - i;
*server_argv = &argv[i];
return argc - i;
@@ -171,33 +180,33 @@ void netDriver_waitForServerReady(uint16_t portno) {
}
int LLVMFuzzerInitialize(int *argc, char ***argv) {
- tcp_port = HonggfuzzNetDriverPort(*argc, *argv);
- *argc = HonggfuzzNetDriverArgsForServer(*argc, *argv, &argc_server, &argv_server);
+ hfnd_globals.tcp_port = HonggfuzzNetDriverPort(*argc, *argv);
+ *argc = HonggfuzzNetDriverArgsForServer(
+ *argc, *argv, &hfnd_globals.argc_server, &hfnd_globals.argv_server);
- LOG_I("Honggfuzz Net Driver (pid=%d): TCP port:%d will be used", (int)getpid(), tcp_port);
+ LOG_I("Honggfuzz Net Driver (pid=%d): TCP port:%d will be used", (int)getpid(),
+ hfnd_globals.tcp_port);
+ netDriver_initNs();
netDriver_startOriginalProgramInThread();
- netDriver_waitForServerReady(tcp_port);
+ netDriver_waitForServerReady(hfnd_globals.tcp_port);
return 0;
}
int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len) {
- int sock = netDriver_sockConn(tcp_port);
+ int sock = netDriver_sockConn(hfnd_globals.tcp_port);
if (sock == -1) {
LOG_F("Couldn't connect to the server TCP port");
}
- while (send(sock, buf, len, MSG_NOSIGNAL) == -1) {
- if (errno == EINTR) {
- continue;
- }
+ if (TEMP_FAILURE_RETRY(send(sock, buf, len, MSG_NOSIGNAL)) == -1) {
PLOG_F("send(sock=%d, len=%zu) failed", sock, len);
}
/*
- * Indicate the end of input for the TCP server
+ * Indicate the end of input to the TCP server
*
- * Well-behaved TCP servers should process the input at this point, and close the TCP connection
+ * Well-behaved TCP servers should process the input, or close the TCP connection at this point
*/
- if (shutdown(sock, SHUT_WR)) {
+ if (TEMP_FAILURE_RETRY(shutdown(sock, SHUT_WR)) == -1) {
if (errno == ENOTCONN) {
close(sock);
return 0;
@@ -210,29 +219,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len) {
* TCP server to drop the input data, instead of processing it
*/
static char b[1024 * 1024 * 8];
- while (recv(sock, b, sizeof(b), MSG_WAITALL) > 0)
+ while (TEMP_FAILURE_RETRY(recv(sock, b, sizeof(b), MSG_WAITALL)) > 0)
;
close(sock);
return 0;
}
-
-/* Use -Wl,--wrap=main to redirect invocation of the whole program from main() to __wrap_main() */
-int __wrap_main(int argc, char **argv) {
- netDriver_initNs();
-
- int (*f1)(int argc, char **argv) = netDriver_getSymbol("HonggfuzzMain");
- int (*f2)(int *argc, char ***argv, void *callback) =
- netDriver_getSymbol("_ZN6fuzzer12FuzzerDriverEPiPPPcPFiPKhmE");
-
- if (f1) {
- return f1(argc, argv);
- }
- if (f2) {
- return f2(&argc, &argv, LLVMFuzzerTestOneInput);
- }
-
- LOG_F("Couldn't find Honggfuzz nor LibFuzzer entry points");
- return 0;
-}
diff --git a/libhfnetdriver/netdriver.h b/libhfnetdriver/netdriver.h
new file mode 100644
index 00000000..c0976ec1
--- /dev/null
+++ b/libhfnetdriver/netdriver.h
@@ -0,0 +1,14 @@
+#ifndef _HF_LIBHFNETDRIVER_NETDRIVER
+#define _HF_LIBHFNETDRIVER_NETDRIVER
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* ifdef __cplusplus */
+
+int HonggfuzzNetDriver_main(int argc, char **argv);
+
+#ifdef __cplusplus
+}
+#endif /* ifdef __cplusplus */
+
+#endif /* ifndef _HF_LIBHFNETDRIVER_NETDRIVER */
diff --git a/libhfuzz/instrument.c b/libhfuzz/instrument.c
index d8d17f37..ad3800f9 100644
--- a/libhfuzz/instrument.c
+++ b/libhfuzz/instrument.c
@@ -16,9 +16,9 @@
#include <unistd.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
int hfuzz_module_instrument = 0;
diff --git a/libhfuzz/linux.c b/libhfuzz/linux.c
index 93ecc353..c211130e 100644
--- a/libhfuzz/linux.c
+++ b/libhfuzz/linux.c
@@ -1,9 +1,9 @@
-#include "libcommon/common.h"
+#include "libhfcommon/common.h"
#include "libhfuzz.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/ns.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/ns.h"
#if defined(_HF_ARCH_LINUX)
diff --git a/libhfuzz/persistent.c b/libhfuzz/persistent.c
index 61d103f3..7b2304b8 100644
--- a/libhfuzz/persistent.c
+++ b/libhfuzz/persistent.c
@@ -14,9 +14,9 @@
#include <unistd.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
__attribute__((weak)) int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len);
__attribute__((weak)) int LLVMFuzzerInitialize(int* argc UNUSED, char*** argv UNUSED) { return 0; }
diff --git a/linux/arch.c b/linux/arch.c
index 9fbbd672..89775f6f 100644
--- a/linux/arch.c
+++ b/linux/arch.c
@@ -47,11 +47,11 @@
#include <unistd.h>
#include "fuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/ns.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/ns.h"
+#include "libhfcommon/util.h"
#include "linux/perf.h"
#include "linux/trace.h"
#include "sancov.h"
diff --git a/linux/bfd.c b/linux/bfd.c
index 48bf7078..07a905ea 100644
--- a/linux/bfd.c
+++ b/linux/bfd.c
@@ -36,10 +36,10 @@
#include <unistd.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
typedef struct {
bfd* bfdh;
diff --git a/linux/perf.c b/linux/perf.c
index b27e1f46..410f95ec 100644
--- a/linux/perf.c
+++ b/linux/perf.c
@@ -40,10 +40,10 @@
#include <sys/syscall.h>
#include <unistd.h>
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "pt.h"
#define _HF_PERF_MAP_SZ (1024 * 512)
diff --git a/linux/pt.c b/linux/pt.c
index 643db200..8f77c291 100644
--- a/linux/pt.c
+++ b/linux/pt.c
@@ -21,13 +21,13 @@
*
*/
-#include "libcommon/common.h"
+#include "libhfcommon/common.h"
#include <inttypes.h>
#include <linux/perf_event.h>
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "pt.h"
#ifdef _HF_LINUX_INTEL_PT_LIB
diff --git a/linux/trace.c b/linux/trace.c
index e67a46df..eebec962 100644
--- a/linux/trace.c
+++ b/linux/trace.c
@@ -48,10 +48,10 @@
#include <time.h>
#include <unistd.h>
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "linux/bfd.h"
#include "linux/unwind.h"
#include "sancov.h"
diff --git a/linux/unwind.c b/linux/unwind.c
index 9519b4de..e7021aa0 100644
--- a/linux/unwind.c
+++ b/linux/unwind.c
@@ -30,8 +30,8 @@
#include <string.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/log.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
/*
* WARNING: Ensure that _UPT-info structs are not shared between threads
diff --git a/mac/arch.c b/mac/arch.c
index 4e9b8805..b30bf776 100644
--- a/mac/arch.c
+++ b/mac/arch.c
@@ -43,10 +43,10 @@
#include <unistd.h>
#include "honggfuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "sancov.h"
#include "subproc.h"
diff --git a/mangle.c b/mangle.c
index 3512aeef..3490f329 100644
--- a/mangle.c
+++ b/mangle.c
@@ -32,9 +32,9 @@
#include <sys/mman.h>
#include <unistd.h>
-#include "libcommon/common.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
static inline void mangle_Overwrite(run_t* run, const uint8_t* src, size_t off, size_t sz) {
size_t maxToCopy = run->dynamicFileSz - off;
diff --git a/posix/arch.c b/posix/arch.c
index 578d9bdc..18493ced 100644
--- a/posix/arch.c
+++ b/posix/arch.c
@@ -41,10 +41,10 @@
#include <unistd.h>
#include "fuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "sancov.h"
#include "subproc.h"
diff --git a/report.c b/report.c
index a6c9f569..3ec363eb 100644
--- a/report.c
+++ b/report.c
@@ -29,9 +29,9 @@
#include <sys/stat.h>
#include <sys/types.h>
-#include "libcommon/common.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
static int reportFD = -1;
diff --git a/sancov.c b/sancov.c
index 876c834b..ea7a87d2 100644
--- a/sancov.c
+++ b/sancov.c
@@ -50,10 +50,10 @@
#include <sys/stat.h>
#include <sys/types.h>
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
#include "sanitizers.h"
/* sancov files magic values */
diff --git a/sanitizers.c b/sanitizers.c
index 021c95c3..301ef1f0 100644
--- a/sanitizers.c
+++ b/sanitizers.c
@@ -10,10 +10,10 @@
#include <sys/stat.h>
#include <sys/types.h>
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
/* Stringify */
#define XSTR(x) #x
@@ -98,7 +98,7 @@
#define kSAN_REGULAR \
"abort_on_error=1:handle_segv=0:handle_sigbus=0:handle_abort=0:" \
"handle_sigill=0:handle_sigfpe=0:allocator_may_return_null=1:" \
- "symbolize=1:detect_leaks=0:disable_coredump=0:soft_rss_limit_mb=0"
+ "symbolize=1:detect_leaks=0:disable_coredump=0"
/*
* If the program ends with a signal that ASan does not handle (or can not
diff --git a/subproc.c b/subproc.c
index b6e3e171..efb5a69c 100644
--- a/subproc.c
+++ b/subproc.c
@@ -41,10 +41,10 @@
#include "arch.h"
#include "fuzz.h"
-#include "libcommon/common.h"
-#include "libcommon/files.h"
-#include "libcommon/log.h"
-#include "libcommon/util.h"
+#include "libhfcommon/common.h"
+#include "libhfcommon/files.h"
+#include "libhfcommon/log.h"
+#include "libhfcommon/util.h"
extern char** environ;