Add stub library that just feeds files to the fuzzing target.
This will allow the fuzzers to be run as part of "make check".
This commit is contained in:
2
MANIFEST
2
MANIFEST
@@ -108,6 +108,8 @@ lib/eventlog/logwrap.c
|
|||||||
lib/eventlog/regress/logwrap/check_wrap.c
|
lib/eventlog/regress/logwrap/check_wrap.c
|
||||||
lib/eventlog/regress/logwrap/check_wrap.in
|
lib/eventlog/regress/logwrap/check_wrap.in
|
||||||
lib/eventlog/regress/logwrap/check_wrap.out.ok
|
lib/eventlog/regress/logwrap/check_wrap.out.ok
|
||||||
|
lib/fuzzstub/Makefile.in
|
||||||
|
lib/fuzzstub/fuzzstub.c
|
||||||
lib/iolog/Makefile.in
|
lib/iolog/Makefile.in
|
||||||
lib/iolog/host_port.c
|
lib/iolog/host_port.c
|
||||||
lib/iolog/hostcheck.c
|
lib/iolog/hostcheck.c
|
||||||
|
@@ -56,7 +56,7 @@ shlib_mode = @SHLIB_MODE@
|
|||||||
# Version of python detected by configure (major.minor)
|
# Version of python detected by configure (major.minor)
|
||||||
python_version = @PYTHON_VERSION@
|
python_version = @PYTHON_VERSION@
|
||||||
|
|
||||||
SUBDIRS = lib/util @ZLIB_SRC@ lib/eventlog lib/iolog @LOGSRV_SRC@ \
|
SUBDIRS = lib/util @ZLIB_SRC@ lib/eventlog lib/fuzzstub lib/iolog @LOGSRV_SRC@ \
|
||||||
@LOGSRVD_SRC@ plugins/audit_json plugins/group_file \
|
@LOGSRVD_SRC@ plugins/audit_json plugins/group_file \
|
||||||
plugins/sample_approval plugins/sudoers plugins/system_group \
|
plugins/sample_approval plugins/sudoers plugins/system_group \
|
||||||
@PYTHON_PLUGIN_SRC@ src include doc examples
|
@PYTHON_PLUGIN_SRC@ src include doc examples
|
||||||
@@ -210,7 +210,8 @@ siglist.c signame.c:
|
|||||||
depend: siglist.c signame.c
|
depend: siglist.c signame.c
|
||||||
$(scriptdir)/mkdep.pl \
|
$(scriptdir)/mkdep.pl \
|
||||||
--srcdir=$(abs_top_srcdir) --builddir=$(abs_top_builddir) \
|
--srcdir=$(abs_top_srcdir) --builddir=$(abs_top_builddir) \
|
||||||
lib/util/Makefile.in lib/zlib/Makefile.in lib/eventlog/Makefile.in \
|
lib/util/Makefile.in lib/zlib/Makefile.in \
|
||||||
|
lib/fuzzstub/Makefile.in lib/eventlog/Makefile.in \
|
||||||
lib/iolog/Makefile.in lib/logsrv/Makefile.in logsrvd/Makefile.in \
|
lib/iolog/Makefile.in lib/logsrv/Makefile.in logsrvd/Makefile.in \
|
||||||
plugins/group_file/Makefile.in plugins/sample/Makefile.in \
|
plugins/group_file/Makefile.in plugins/sample/Makefile.in \
|
||||||
plugins/sudoers/Makefile.in plugins/system_group/Makefile.in \
|
plugins/sudoers/Makefile.in plugins/system_group/Makefile.in \
|
||||||
@@ -219,6 +220,7 @@ depend: siglist.c signame.c
|
|||||||
$(top_builddir)/config.status --file $(top_builddir)/lib/util/Makefile \
|
$(top_builddir)/config.status --file $(top_builddir)/lib/util/Makefile \
|
||||||
--file $(top_builddir)/lib/zlib/Makefile \
|
--file $(top_builddir)/lib/zlib/Makefile \
|
||||||
--file $(top_builddir)/lib/eventlog/Makefile \
|
--file $(top_builddir)/lib/eventlog/Makefile \
|
||||||
|
--file $(top_builddir)/lib/fuzzstub/Makefile \
|
||||||
--file $(top_builddir)/lib/iolog/Makefile \
|
--file $(top_builddir)/lib/iolog/Makefile \
|
||||||
--file $(top_builddir)/lib/logsrv/Makefile \
|
--file $(top_builddir)/lib/logsrv/Makefile \
|
||||||
--file $(top_builddir)/logsrvd/Makefile \
|
--file $(top_builddir)/logsrvd/Makefile \
|
||||||
|
6
configure
vendored
6
configure
vendored
@@ -28765,6 +28765,9 @@ else $as_nop
|
|||||||
:
|
:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
# Not using compiler fuzzing support, link with stub library.
|
||||||
|
FUZZ_ENGINE='$(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$GCC"; then
|
if test -n "$GCC"; then
|
||||||
@@ -29489,7 +29492,7 @@ elif test X"$TMPFILES_D" != X""; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers"
|
ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers"
|
||||||
|
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
@@ -30486,6 +30489,7 @@ do
|
|||||||
"examples/sudo.conf") CONFIG_FILES="$CONFIG_FILES examples/sudo.conf" ;;
|
"examples/sudo.conf") CONFIG_FILES="$CONFIG_FILES examples/sudo.conf" ;;
|
||||||
"include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
|
"include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
|
||||||
"lib/eventlog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/eventlog/Makefile" ;;
|
"lib/eventlog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/eventlog/Makefile" ;;
|
||||||
|
"lib/fuzzstub/Makefile") CONFIG_FILES="$CONFIG_FILES lib/fuzzstub/Makefile" ;;
|
||||||
"lib/iolog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/iolog/Makefile" ;;
|
"lib/iolog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/iolog/Makefile" ;;
|
||||||
"lib/logsrv/Makefile") CONFIG_FILES="$CONFIG_FILES lib/logsrv/Makefile" ;;
|
"lib/logsrv/Makefile") CONFIG_FILES="$CONFIG_FILES lib/logsrv/Makefile" ;;
|
||||||
"lib/util/Makefile") CONFIG_FILES="$CONFIG_FILES lib/util/Makefile" ;;
|
"lib/util/Makefile") CONFIG_FILES="$CONFIG_FILES lib/util/Makefile" ;;
|
||||||
|
@@ -4604,6 +4604,9 @@ if test "$enable_fuzzer" = "yes"; then
|
|||||||
AX_APPEND_FLAG([-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION], [CFLAGS])
|
AX_APPEND_FLAG([-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION], [CFLAGS])
|
||||||
AC_DEFINE(NO_LEAKS)
|
AC_DEFINE(NO_LEAKS)
|
||||||
])
|
])
|
||||||
|
else
|
||||||
|
# Not using compiler fuzzing support, link with stub library.
|
||||||
|
FUZZ_ENGINE='$(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
@@ -4914,7 +4917,7 @@ elif test X"$TMPFILES_D" != X""; then
|
|||||||
AC_CONFIG_FILES([etc/init.d/sudo.conf])
|
AC_CONFIG_FILES([etc/init.d/sudo.conf])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers])
|
AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
|
166
lib/fuzzstub/Makefile.in
Normal file
166
lib/fuzzstub/Makefile.in
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
#
|
||||||
|
# SPDX-License-Identifier: ISC
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software for any
|
||||||
|
# purpose with or without fee is hereby granted, provided that the above
|
||||||
|
# copyright notice and this permission notice appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
#
|
||||||
|
# @configure_input@
|
||||||
|
#
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
devdir = @devdir@
|
||||||
|
scriptdir = $(top_srcdir)/scripts
|
||||||
|
incdir = $(top_srcdir)/include
|
||||||
|
|
||||||
|
# Compiler & tools to use
|
||||||
|
CC = @CC@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
|
||||||
|
# C preprocessor flags
|
||||||
|
CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) @CPPFLAGS@
|
||||||
|
|
||||||
|
# Usually -O and/or -g
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
|
||||||
|
# Flags to pass to the link stage
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
|
||||||
|
# Flags to pass to libtool
|
||||||
|
LTFLAGS = @LT_STATIC@
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
LT_LIBS =
|
||||||
|
LIBS = $(LT_LIBS)
|
||||||
|
|
||||||
|
# Address sanitizer flags
|
||||||
|
ASAN_CFLAGS = @ASAN_CFLAGS@
|
||||||
|
ASAN_LDFLAGS = @ASAN_LDFLAGS@
|
||||||
|
|
||||||
|
# PIE flags
|
||||||
|
PIE_CFLAGS = @PIE_CFLAGS@
|
||||||
|
PIE_LDFLAGS = @PIE_LDFLAGS@
|
||||||
|
|
||||||
|
# Stack smashing protection flags
|
||||||
|
SSP_CFLAGS = @SSP_CFLAGS@
|
||||||
|
SSP_LDFLAGS = @SSP_LDFLAGS@
|
||||||
|
|
||||||
|
# cppcheck options, usually set in the top-level Makefile
|
||||||
|
CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
|
||||||
|
|
||||||
|
# splint options, usually set in the top-level Makefile
|
||||||
|
SPLINT_OPTS = -D__restrict= -checks
|
||||||
|
|
||||||
|
# PVS-studio options
|
||||||
|
PVS_CFG = $(top_srcdir)/PVS-Studio.cfg
|
||||||
|
PVS_IGNORE = 'V707,V011,V002,V536'
|
||||||
|
PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE)
|
||||||
|
|
||||||
|
# Set to non-empty for development mode
|
||||||
|
DEVEL = @DEVEL@
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
LIBFUZZSTUB_OBJS = fuzzstub.lo
|
||||||
|
|
||||||
|
IOBJS = $(LIBFUZZSTUB_OBJS:.lo=.i)
|
||||||
|
|
||||||
|
POBJS = $(IOBJS:.i=.plog)
|
||||||
|
|
||||||
|
all: libsudo_fuzzstub.la
|
||||||
|
|
||||||
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
|
pvs-studio: $(POBJS)
|
||||||
|
plog-converter $(PVS_LOG_OPTS) $(POBJS)
|
||||||
|
|
||||||
|
depend:
|
||||||
|
$(scriptdir)/mkdep.pl --srcdir=$(abs_top_srcdir) \
|
||||||
|
--builddir=$(abs_top_builddir) lib/fuzzstub/Makefile.in
|
||||||
|
cd $(top_builddir) && ./config.status --file lib/fuzzstub/Makefile
|
||||||
|
|
||||||
|
Makefile: $(srcdir)/Makefile.in
|
||||||
|
cd $(top_builddir) && ./config.status --file lib/fuzzstub/Makefile
|
||||||
|
|
||||||
|
.SUFFIXES: .c .h .i .lo .plog
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $<
|
||||||
|
|
||||||
|
.c.i:
|
||||||
|
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||||
|
|
||||||
|
.i.plog:
|
||||||
|
ifile=$<; rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $${ifile%i}c --i-file $< --output-file $@
|
||||||
|
|
||||||
|
libsudo_fuzzstub.la: $(LIBFUZZSTUB_OBJS)
|
||||||
|
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBFUZZSTUB_OBJS) $(LT_LIBS)
|
||||||
|
|
||||||
|
pre-install:
|
||||||
|
|
||||||
|
install:
|
||||||
|
|
||||||
|
install-binaries:
|
||||||
|
|
||||||
|
install-includes:
|
||||||
|
|
||||||
|
install-doc:
|
||||||
|
|
||||||
|
install-plugin:
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
|
||||||
|
splint:
|
||||||
|
splint $(SPLINT_OPTS) -I$(incdir) -I$(top_builddir) -I$(top_srcdir) $(srcdir)/*.c
|
||||||
|
|
||||||
|
cppcheck:
|
||||||
|
cppcheck $(CPPCHECK_OPTS) -I$(incdir) -I$(top_builddir) -I$(top_srcdir) $(srcdir)/*.c
|
||||||
|
|
||||||
|
pvs-log-files: $(POBJS)
|
||||||
|
|
||||||
|
check:
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f *.lo *.o *.la
|
||||||
|
-rm -f *.i *.plog stamp-* core *.core core.*
|
||||||
|
|
||||||
|
mostlyclean: clean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
-rm -rf Makefile .libs
|
||||||
|
|
||||||
|
clobber: distclean
|
||||||
|
|
||||||
|
realclean: distclean
|
||||||
|
rm -f TAGS tags
|
||||||
|
|
||||||
|
cleandir: realclean
|
||||||
|
|
||||||
|
# Autogenerated dependencies, do not modify
|
||||||
|
fuzzstub.lo: $(srcdir)/fuzzstub.c $(incdir)/sudo_compat.h \
|
||||||
|
$(top_builddir)/config.h
|
||||||
|
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/fuzzstub.c
|
||||||
|
fuzzstub.i: $(srcdir)/fuzzstub.c $(incdir)/sudo_compat.h \
|
||||||
|
$(top_builddir)/config.h
|
||||||
|
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||||
|
fuzzstub.plog: fuzzstub.i
|
||||||
|
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/fuzzstub.c --i-file $< --output-file $@
|
106
lib/fuzzstub/fuzzstub.c
Normal file
106
lib/fuzzstub/fuzzstub.c
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: ISC
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is an open source non-commercial project. Dear PVS-Studio, please check it.
|
||||||
|
* PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#if defined(HAVE_STDINT_H)
|
||||||
|
# include <stdint.h>
|
||||||
|
#elif defined(HAVE_INTTYPES_H)
|
||||||
|
# include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "sudo_compat.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Simple driver for fuzzers built for LLVM libfuzzer.
|
||||||
|
* This stub library allows fuzz targets to be built and run without
|
||||||
|
* libfuzzer. No actual fuzzing will occur but the provided inputs
|
||||||
|
* will be tested.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
size_t bufsize = 0;
|
||||||
|
ssize_t nread;
|
||||||
|
struct stat sb;
|
||||||
|
uint8_t *buf = NULL;
|
||||||
|
int fd, i, errors = 0;
|
||||||
|
|
||||||
|
/* Test provided input files. */
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
fd = open(argv[i], O_RDONLY);
|
||||||
|
if (fd == -1 || fstat(fd, &sb) != 0) {
|
||||||
|
fprintf(stderr, "open %s: %s\n", argv[i], strerror(errno));
|
||||||
|
if (fd != -1)
|
||||||
|
close(fd);
|
||||||
|
errors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (sb.st_size > SSIZE_MAX) {
|
||||||
|
errno = E2BIG;
|
||||||
|
fprintf(stderr, "%s: %s\n", argv[i], strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
errors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (bufsize < (size_t)sb.st_size) {
|
||||||
|
void *tmp = realloc(buf, sb.st_size);
|
||||||
|
if (tmp == NULL) {
|
||||||
|
fprintf(stderr, "realloc: %s\n", strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
errors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
buf = tmp;
|
||||||
|
bufsize = sb.st_size;
|
||||||
|
}
|
||||||
|
nread = read(fd, buf, sb.st_size);
|
||||||
|
if (nread != sb.st_size) {
|
||||||
|
if (nread == -1)
|
||||||
|
fprintf(stderr, "read %s: %s\n", argv[i], strerror(errno));
|
||||||
|
else
|
||||||
|
fprintf(stderr, "read %s: short read\n", argv[i]);
|
||||||
|
close(fd);
|
||||||
|
errors++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
/* NOTE: doesn't support LLVMFuzzerInitialize() (but we don't use it) */
|
||||||
|
LLVMFuzzerTestOneInput(buf, nread);
|
||||||
|
}
|
||||||
|
free(buf);
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
@@ -84,12 +84,3 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
/* Nothing for now. */
|
|
||||||
return LLVMFuzzerTestOneInput(NULL, 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@@ -82,12 +82,3 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
/* Nothing for now. */
|
|
||||||
return LLVMFuzzerTestOneInput(NULL, 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@@ -95,12 +95,3 @@ cleanup:
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
/* Nothing for now. */
|
|
||||||
return LLVMFuzzerTestOneInput(NULL, 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@@ -97,12 +97,3 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
/* Nothing for now. */
|
|
||||||
return LLVMFuzzerTestOneInput(NULL, 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@@ -88,12 +88,3 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
/* Nothing for now. */
|
|
||||||
return LLVMFuzzerTestOneInput(NULL, 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
Reference in New Issue
Block a user