Add fuzz Makefile target and run fuzzer corpus in make check.
This commit is contained in:
1
MANIFEST
1
MANIFEST
@@ -701,6 +701,7 @@ plugins/sudoers/regress/env_match/check_env_pattern.c
|
|||||||
plugins/sudoers/regress/env_match/data
|
plugins/sudoers/regress/env_match/data
|
||||||
plugins/sudoers/regress/exptilde/check_exptilde.c
|
plugins/sudoers/regress/exptilde/check_exptilde.c
|
||||||
plugins/sudoers/regress/fuzz/fuzz_sudoers.c
|
plugins/sudoers/regress/fuzz/fuzz_sudoers.c
|
||||||
|
plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok
|
||||||
plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c
|
plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c
|
||||||
plugins/sudoers/regress/iolog_plugin/check_iolog_plugin.c
|
plugins/sudoers/regress/iolog_plugin/check_iolog_plugin.c
|
||||||
plugins/sudoers/regress/parser/check_addr.c
|
plugins/sudoers/regress/parser/check_addr.c
|
||||||
|
@@ -110,7 +110,7 @@ all: config.status
|
|||||||
exit $$?; \
|
exit $$?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
check pre-install: config.status
|
fuzz check pre-install: config.status
|
||||||
for d in $(SUBDIRS); do \
|
for d in $(SUBDIRS); do \
|
||||||
(cd $$d && exec $(MAKE) $@) && continue; \
|
(cd $$d && exec $(MAKE) $@) && continue; \
|
||||||
exit $$?; \
|
exit $$?; \
|
||||||
|
@@ -404,6 +404,8 @@ pvs-log-files:
|
|||||||
|
|
||||||
pvs-studio:
|
pvs-studio:
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -102,6 +102,8 @@ pvs-log-files:
|
|||||||
|
|
||||||
pvs-studio:
|
pvs-studio:
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -88,6 +88,8 @@ pvs-log-files:
|
|||||||
|
|
||||||
pvs-studio:
|
pvs-studio:
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -144,6 +144,8 @@ cppcheck:
|
|||||||
|
|
||||||
pvs-log-files: $(POBJS)
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check: $(TEST_PROGS)
|
check: $(TEST_PROGS)
|
||||||
@if test X"$(cross_compiling)" != X"yes"; then \
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
LC_ALL=C; export LC_ALL; \
|
LC_ALL=C; export LC_ALL; \
|
||||||
|
@@ -137,6 +137,8 @@ cppcheck:
|
|||||||
|
|
||||||
pvs-log-files: $(POBJS)
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -191,7 +191,17 @@ cppcheck:
|
|||||||
|
|
||||||
pvs-log-files: $(POBJS)
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
check: $(TEST_PROGS) $(FUZZ_PROGS)
|
fuzz: $(FUZZ_PROGS)
|
||||||
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
|
echo "fuzz_iolog_legacy: verifying corpus"; \
|
||||||
|
./fuzz_iolog_legacy $(srcdir)/regress/corpus/log_legacy/*; \
|
||||||
|
echo "fuzz_iolog_json: verifying corpus"; \
|
||||||
|
./fuzz_iolog_json $(srcdir)/regress/corpus/log_json/*; \
|
||||||
|
echo "fuzz_iolog_timing: verifying corpus"; \
|
||||||
|
./fuzz_iolog_timing $(srcdir)/regress/corpus/timing/*; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
check: $(TEST_PROGS) fuzz
|
||||||
@if test X"$(cross_compiling)" != X"yes"; then \
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
LC_ALL=C; export LC_ALL; \
|
LC_ALL=C; export LC_ALL; \
|
||||||
unset LANG || LANG=; \
|
unset LANG || LANG=; \
|
||||||
|
@@ -146,6 +146,8 @@ cppcheck:
|
|||||||
|
|
||||||
pvs-log-files: $(POBJS)
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -313,6 +313,8 @@ cppcheck:
|
|||||||
|
|
||||||
pvs-log-files: $(POBJS)
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
# Note: some regress checks are run from srcdir for consistent error messages
|
# Note: some regress checks are run from srcdir for consistent error messages
|
||||||
check: $(TEST_PROGS)
|
check: $(TEST_PROGS)
|
||||||
@if test X"$(cross_compiling)" != X"yes"; then \
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
|
@@ -159,6 +159,8 @@ pvs-log-files:
|
|||||||
|
|
||||||
pvs-studio:
|
pvs-studio:
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -187,6 +187,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -179,6 +179,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -182,6 +182,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -218,6 +218,8 @@ realclean: distclean
|
|||||||
|
|
||||||
cleandir: realclean
|
cleandir: realclean
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check: $(TEST_PROGS)
|
check: $(TEST_PROGS)
|
||||||
@if test X"$(cross_compiling)" != X"yes"; then \
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
./check_python_examples ".libs/python_plugin.so"; \
|
./check_python_examples ".libs/python_plugin.so"; \
|
||||||
|
@@ -177,6 +177,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -179,6 +179,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -474,7 +474,17 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
check: $(TEST_PROGS) $(FUZZ_PROGS) visudo testsudoers cvtsudoers
|
fuzz: $(FUZZ_PROGS)
|
||||||
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
|
echo "fuzz_sudoers: verifying corpus"; \
|
||||||
|
mkdir -p regress/fuzz; \
|
||||||
|
./fuzz_sudoers $(srcdir)/sudoers $(srcdir)/regress/sudoers/*.in > regress/fuzz/fuzz_sudoers.out 2>&1; \
|
||||||
|
diff $(srcdir)/regress/fuzz/fuzz_sudoers.out.ok regress/fuzz/fuzz_sudoers.out; \
|
||||||
|
echo "fuzz_sudoers-ldif: verifying corpus"; \
|
||||||
|
./fuzz_sudoers_ldif $(srcdir)/regress/sudoers/*.ldif.ok; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
check: $(TEST_PROGS) visudo testsudoers cvtsudoers fuzz
|
||||||
@if test X"$(cross_compiling)" != X"yes"; then \
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
LC_ALL=C; export LC_ALL; \
|
LC_ALL=C; export LC_ALL; \
|
||||||
unset LANG || LANG=; \
|
unset LANG || LANG=; \
|
||||||
|
57
plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok
Normal file
57
plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
sudoers:1:6: syntax error
|
||||||
|
bogus
|
||||||
|
^
|
||||||
|
sudoers:1:17: syntax error
|
||||||
|
user ALL = (ALL)
|
||||||
|
^
|
||||||
|
sudoers:1:17: syntax error
|
||||||
|
user ALL = (ALL)
|
||||||
|
^
|
||||||
|
sudoers:4:21: invalid timeout value
|
||||||
|
user0 ALL = TIMEOUT=7dd4h10m30s /usr/bin/id, /usr/bin/who, TIMEOUT=0 /bin/ls
|
||||||
|
^~~~~~~~~~~
|
||||||
|
sudoers:5:21: invalid timeout value
|
||||||
|
user1 ALL = TIMEOUT=7d4h10mm30s /usr/bin/id
|
||||||
|
^~~~~~~~~~~
|
||||||
|
sudoers:6:21: invalid timeout value
|
||||||
|
user2 ALL = TIMEOUT=4hg10m30s /usr/bin/id
|
||||||
|
^~~~~~~~~
|
||||||
|
sudoers:7:21: invalid timeout value
|
||||||
|
user3 ALL = TIMEOUT=10m30ss /usr/bin/id
|
||||||
|
^~~~~~~
|
||||||
|
sudoers:8:21: invalid timeout value
|
||||||
|
user4 ALL = TIMEOUT=14g /usr/bin/id
|
||||||
|
^~~
|
||||||
|
sudoers:4:28: syntax error
|
||||||
|
foo ALL = CWD=~ron /bin/ls \
|
||||||
|
^~
|
||||||
|
sudoers:7:1: invalid line continuation
|
||||||
|
User_Alias BAR = bar
|
||||||
|
^~~~~~~~~~
|
||||||
|
sudoers:2:19: empty string
|
||||||
|
User_Alias FOO = ""
|
||||||
|
^
|
||||||
|
sudoers:3:2: empty string
|
||||||
|
"" ALL = ALL
|
||||||
|
^
|
||||||
|
sudoers:2:21: empty group
|
||||||
|
User_Alias FOO1 = "%"
|
||||||
|
^
|
||||||
|
sudoers:3:22: empty group
|
||||||
|
User_Alias FOO2 = "%:"
|
||||||
|
^
|
||||||
|
sudoers:4:21: empty netgroup
|
||||||
|
User_Alias FOO3 = "+"
|
||||||
|
^
|
||||||
|
sudoers:5:19: empty group
|
||||||
|
User_Alias FOO4 = %
|
||||||
|
^
|
||||||
|
sudoers:6:19: empty group
|
||||||
|
User_Alias FOO5 = %:
|
||||||
|
^~
|
||||||
|
sudoers:7:19: empty netgroup
|
||||||
|
User_Alias FOO6 = +
|
||||||
|
^
|
||||||
|
sudoers:8:20: unexpected line break in string
|
||||||
|
User_Alias UA4 = "x
|
||||||
|
^
|
@@ -182,6 +182,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check:
|
check:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@@ -263,6 +263,8 @@ pvs-log-files: $(POBJS)
|
|||||||
pvs-studio: $(POBJS)
|
pvs-studio: $(POBJS)
|
||||||
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
fuzz:
|
||||||
|
|
||||||
check: $(TEST_PROGS)
|
check: $(TEST_PROGS)
|
||||||
@if test X"$(cross_compiling)" != X"yes"; then \
|
@if test X"$(cross_compiling)" != X"yes"; then \
|
||||||
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
|
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
|
||||||
|
Reference in New Issue
Block a user