mirror of
https://github.com/nmap/nmap.git
synced 2026-10-23 12:21:59 +00:00
Fuzzing framework using libfuzzer
This commit is contained in:
parent
e294b4fd73
commit
7a81c8e5dd
17 changed files with 1852 additions and 207 deletions
17
Makefile.in
17
Makefile.in
|
|
@ -87,6 +87,11 @@ UNINSTALLZENMAP=@UNINSTALLZENMAP@
|
|||
UNINSTALLNDIFF=@UNINSTALLNDIFF@
|
||||
UNINSTALLNPING=@UNINSTALLNPING@
|
||||
|
||||
ifeq (@ENABLE_FUZZING@,yes)
|
||||
BUILDFUZZ=build-fuzz
|
||||
CLEANFUZZ=clean-fuzz
|
||||
endif
|
||||
|
||||
ifneq (@NOLUA@,yes)
|
||||
NSE_SRC=nse_main.cc nse_utility.cc nse_nsock.cc nse_db.cc nse_dnet.cc nse_fs.cc nse_nmaplib.cc nse_debug.cc nse_lpeg.cc
|
||||
NSE_HDRS=nse_main.h nse_utility.h nse_nsock.h nse_db.h nse_dnet.h nse_fs.h nse_nmaplib.h nse_debug.h nse_lpeg.h
|
||||
|
|
@ -123,7 +128,7 @@ OBJS = charpool.o FingerPrintResults.o FPEngine.o FPModel.o idle_scan.o MACLooku
|
|||
# large for field of 2 bytes". Disable debugging for this one file.
|
||||
FPModel.o: CXXFLAGS += -g0
|
||||
|
||||
all: $(TARGET) $(BUILDZENMAP) $(BUILDNDIFF) $(BUILDNPING) $(BUILDNCAT)
|
||||
all: $(TARGET) $(BUILDZENMAP) $(BUILDNDIFF) $(BUILDNPING) $(BUILDNCAT) $(BUILDFUZZ)
|
||||
|
||||
$(TARGET): build-netutil @LIBLINEAR_BUILD@ @PCAP_BUILD@ @LIBSSH2_BUILD@ @ZLIB_BUILD@ @PCRE_BUILD@ @NSOCK_BUILD@ @NBASE_BUILD@ @DNET_BUILD@ @LUA_BUILD@ \
|
||||
$(OBJS) main.o
|
||||
|
|
@ -199,7 +204,7 @@ web:
|
|||
|
||||
clean: @LUA_CLEAN@ @LIBLINEAR_CLEAN@ @PCAP_CLEAN@ @PCRE_CLEAN@ @DNET_CLEAN@ @LIBSSH2_CLEAN@ @ZLIB_CLEAN@\
|
||||
clean-nsock clean-nbase clean-netutil @NPING_CLEAN@ @ZENMAP_CLEAN@ \
|
||||
@NCAT_CLEAN@ @NDIFF_CLEAN@ clean-tests
|
||||
@NCAT_CLEAN@ @NDIFF_CLEAN@ clean-tests $(CLEANFUZZ)
|
||||
rm -f $(OBJS) main.o $(TARGET)
|
||||
# Who generates dependencies.mk? If it is generated by ./configure and
|
||||
# not by make it should be moved to distclean
|
||||
|
|
@ -457,6 +462,14 @@ check-nmap: tests/nmap_dns_test tests/expr_match_test tests/cstring_unescape_tes
|
|||
|
||||
check: @NCAT_CHECK@ @NSOCK_CHECK@ @ZENMAP_CHECK@ @NSE_CHECK@ @NDIFF_CHECK@ check-nmap
|
||||
|
||||
FUZZ_SRCS := $(wildcard fuzz/fuzz_*.cc)
|
||||
FUZZERS := $(FUZZ_SRCS:.cc=)
|
||||
build-fuzz: $(FUZZERS)
|
||||
clean-fuzz:
|
||||
rm -f $(FUZZERS)
|
||||
fuzz/fuzz_%: fuzz/fuzz_%.o fuzz/common.o
|
||||
$(CXX) $(LDFLAGS) -fsanitize=fuzzer -o $@ $^ $(OBJS) $(LIBS)
|
||||
|
||||
${srcdir}/configure: configure.ac
|
||||
cd ${srcdir} && autoconf
|
||||
|
||||
|
|
|
|||
322
aclocal.m4
vendored
322
aclocal.m4
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# generated automatically by aclocal 1.15 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2021 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -12,40 +12,7 @@
|
|||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||
# nls.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
AC_DEFUN([AM_NLS],
|
||||
[
|
||||
AC_MSG_CHECKING([whether NLS is requested])
|
||||
dnl Default is enabled NLS
|
||||
AC_ARG_ENABLE([nls],
|
||||
[ --disable-nls do not use Native Language Support],
|
||||
USE_NLS=$enableval, USE_NLS=yes)
|
||||
AC_MSG_RESULT([$USE_NLS])
|
||||
AC_SUBST([USE_NLS])
|
||||
])
|
||||
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2021 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -79,8 +46,11 @@ AC_DEFUN([AM_PATH_PYTHON],
|
|||
dnl Find a Python interpreter. Python versions prior to 2.0 are not
|
||||
dnl supported. (2.0 was released on October 16, 2000).
|
||||
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
|
||||
[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
|
||||
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
|
||||
[python python2 python3 dnl
|
||||
python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl
|
||||
python3.2 python3.1 python3.0 dnl
|
||||
python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl
|
||||
python2.0])
|
||||
|
||||
AC_ARG_VAR([PYTHON], [the Python interpreter])
|
||||
|
||||
|
|
@ -121,34 +91,141 @@ AC_DEFUN([AM_PATH_PYTHON],
|
|||
])
|
||||
|
||||
if test "$PYTHON" = :; then
|
||||
dnl Run any user-specified action, or abort.
|
||||
dnl Run any user-specified action, or abort.
|
||||
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
|
||||
else
|
||||
|
||||
dnl Query Python for its version number. Getting [:3] seems to be
|
||||
dnl the best way to do this; it's what "site.py" does in the standard
|
||||
dnl library.
|
||||
|
||||
dnl Query Python for its version number. Although site.py simply uses
|
||||
dnl sys.version[:3], printing that failed with Python 3.10, since the
|
||||
dnl trailing zero was eliminated. So now we output just the major
|
||||
dnl and minor version numbers, as numbers. Apparently the tertiary
|
||||
dnl version is not of interest.
|
||||
dnl
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
|
||||
[am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
|
||||
[am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`])
|
||||
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
|
||||
|
||||
dnl Use the values of $prefix and $exec_prefix for the corresponding
|
||||
dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
|
||||
dnl distinct variables so they can be overridden if need be. However,
|
||||
dnl general consensus is that you shouldn't need this ability.
|
||||
|
||||
AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
|
||||
AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
|
||||
|
||||
dnl At times (like when building shared libraries) you may want
|
||||
dnl At times, e.g., when building shared libraries, you may want
|
||||
dnl to know which OS platform Python thinks this is.
|
||||
|
||||
dnl
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
|
||||
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
|
||||
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
|
||||
|
||||
# Just factor out some code duplication.
|
||||
dnl emacs-page
|
||||
dnl If --with-python-sys-prefix is given, use the values of sys.prefix
|
||||
dnl and sys.exec_prefix for the corresponding values of PYTHON_PREFIX
|
||||
dnl and PYTHON_EXEC_PREFIX. Otherwise, use the GNU ${prefix} and
|
||||
dnl ${exec_prefix} variables.
|
||||
dnl
|
||||
dnl The two are made distinct variables so they can be overridden if
|
||||
dnl need be, although general consensus is that you shouldn't need
|
||||
dnl this separation.
|
||||
dnl
|
||||
dnl Also allow directly setting the prefixes via configure options,
|
||||
dnl overriding any default.
|
||||
dnl
|
||||
if test "x$prefix" = xNONE; then
|
||||
am__usable_prefix=$ac_default_prefix
|
||||
else
|
||||
am__usable_prefix=$prefix
|
||||
fi
|
||||
|
||||
# Allow user to request using sys.* values from Python,
|
||||
# instead of the GNU $prefix values.
|
||||
AC_ARG_WITH([python-sys-prefix],
|
||||
[AS_HELP_STRING([--with-python-sys-prefix],
|
||||
[use Python's sys.prefix and sys.exec_prefix values])],
|
||||
[am_use_python_sys=:],
|
||||
[am_use_python_sys=false])
|
||||
|
||||
# Allow user to override whatever the default Python prefix is.
|
||||
AC_ARG_WITH([python_prefix],
|
||||
[AS_HELP_STRING([--with-python_prefix],
|
||||
[override the default PYTHON_PREFIX])],
|
||||
[am_python_prefix_subst=$withval
|
||||
am_cv_python_prefix=$withval
|
||||
AC_MSG_CHECKING([for explicit $am_display_PYTHON prefix])
|
||||
AC_MSG_RESULT([$am_cv_python_prefix])],
|
||||
[
|
||||
if $am_use_python_sys; then
|
||||
# using python sys.prefix value, not GNU
|
||||
AC_CACHE_CHECK([for python default $am_display_PYTHON prefix],
|
||||
[am_cv_python_prefix],
|
||||
[am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`])
|
||||
|
||||
dnl If sys.prefix is a subdir of $prefix, replace the literal value of
|
||||
dnl $prefix with a variable reference so it can be overridden.
|
||||
case $am_cv_python_prefix in
|
||||
$am__usable_prefix*)
|
||||
am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
|
||||
am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
|
||||
;;
|
||||
*)
|
||||
am_python_prefix_subst=$am_cv_python_prefix
|
||||
;;
|
||||
esac
|
||||
else # using GNU prefix value, not python sys.prefix
|
||||
am_python_prefix_subst='${prefix}'
|
||||
am_python_prefix=$am_python_prefix_subst
|
||||
AC_MSG_CHECKING([for GNU default $am_display_PYTHON prefix])
|
||||
AC_MSG_RESULT([$am_python_prefix])
|
||||
fi])
|
||||
# Substituting python_prefix_subst value.
|
||||
AC_SUBST([PYTHON_PREFIX], [$am_python_prefix_subst])
|
||||
|
||||
# emacs-page Now do it all over again for Python exec_prefix, but with yet
|
||||
# another conditional: fall back to regular prefix if that was specified.
|
||||
AC_ARG_WITH([python_exec_prefix],
|
||||
[AS_HELP_STRING([--with-python_exec_prefix],
|
||||
[override the default PYTHON_EXEC_PREFIX])],
|
||||
[am_python_exec_prefix_subst=$withval
|
||||
am_cv_python_exec_prefix=$withval
|
||||
AC_MSG_CHECKING([for explicit $am_display_PYTHON exec_prefix])
|
||||
AC_MSG_RESULT([$am_cv_python_exec_prefix])],
|
||||
[
|
||||
# no explicit --with-python_exec_prefix, but if
|
||||
# --with-python_prefix was given, use its value for python_exec_prefix too.
|
||||
AS_IF([test -n "$with_python_prefix"],
|
||||
[am_python_exec_prefix_subst=$with_python_prefix
|
||||
am_cv_python_exec_prefix=$with_python_prefix
|
||||
AC_MSG_CHECKING([for python_prefix-given $am_display_PYTHON exec_prefix])
|
||||
AC_MSG_RESULT([$am_cv_python_exec_prefix])],
|
||||
[
|
||||
# Set am__usable_exec_prefix whether using GNU or Python values,
|
||||
# since we use that variable for pyexecdir.
|
||||
if test "x$exec_prefix" = xNONE; then
|
||||
am__usable_exec_prefix=$am__usable_prefix
|
||||
else
|
||||
am__usable_exec_prefix=$exec_prefix
|
||||
fi
|
||||
#
|
||||
if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
|
||||
AC_CACHE_CHECK([for python default $am_display_PYTHON exec_prefix],
|
||||
[am_cv_python_exec_prefix],
|
||||
[am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`])
|
||||
dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the
|
||||
dnl literal value of $exec_prefix with a variable reference so it can
|
||||
dnl be overridden.
|
||||
case $am_cv_python_exec_prefix in
|
||||
$am__usable_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
|
||||
am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
|
||||
;;
|
||||
*)
|
||||
am_python_exec_prefix_subst=$am_cv_python_exec_prefix
|
||||
;;
|
||||
esac
|
||||
else # using GNU $exec_prefix, not python sys.exec_prefix
|
||||
am_python_exec_prefix_subst='${exec_prefix}'
|
||||
am_python_exec_prefix=$am_python_exec_prefix_subst
|
||||
AC_MSG_CHECKING([for GNU default $am_display_PYTHON exec_prefix])
|
||||
AC_MSG_RESULT([$am_python_exec_prefix])
|
||||
fi])])
|
||||
# Substituting python_exec_prefix_subst.
|
||||
AC_SUBST([PYTHON_EXEC_PREFIX], [$am_python_exec_prefix_subst])
|
||||
|
||||
# Factor out some code duplication into this shell variable.
|
||||
am_python_setup_sysconfig="\
|
||||
import sys
|
||||
# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
||||
|
|
@ -168,96 +245,95 @@ try:
|
|||
except ImportError:
|
||||
pass"
|
||||
|
||||
dnl Set up 4 directories:
|
||||
dnl emacs-page Set up 4 directories:
|
||||
|
||||
dnl pythondir -- where to install python scripts. This is the
|
||||
dnl site-packages directory, not the python standard library
|
||||
dnl directory like in previous automake betas. This behavior
|
||||
dnl is more consistent with lispdir.m4 for example.
|
||||
dnl 1. pythondir: where to install python scripts. This is the
|
||||
dnl site-packages directory, not the python standard library
|
||||
dnl directory like in previous automake betas. This behavior
|
||||
dnl is more consistent with lispdir.m4 for example.
|
||||
dnl Query distutils for this directory.
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON script directory],
|
||||
[am_cv_python_pythondir],
|
||||
[if test "x$prefix" = xNONE
|
||||
then
|
||||
am_py_prefix=$ac_default_prefix
|
||||
else
|
||||
am_py_prefix=$prefix
|
||||
fi
|
||||
am_cv_python_pythondir=`$PYTHON -c "
|
||||
dnl
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON script directory (pythondir)],
|
||||
[am_cv_python_pythondir],
|
||||
[if test "x$am_cv_python_prefix" = x; then
|
||||
am_py_prefix=$am__usable_prefix
|
||||
else
|
||||
am_py_prefix=$am_cv_python_prefix
|
||||
fi
|
||||
am_cv_python_pythondir=`$PYTHON -c "
|
||||
$am_python_setup_sysconfig
|
||||
if can_use_sysconfig:
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||
else:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||
sys.stdout.write(sitedir)"`
|
||||
case $am_cv_python_pythondir in
|
||||
$am_py_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
#
|
||||
case $am_cv_python_pythondir in
|
||||
$am_py_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_prefix in
|
||||
/usr|/System*) ;;
|
||||
*) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
|
||||
;;
|
||||
esac
|
||||
])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([pythondir], [$am_cv_python_pythondir])
|
||||
|
||||
dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
|
||||
dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
|
||||
dnl more consistent with the rest of automake.
|
||||
|
||||
dnl 2. pkgpythondir: $PACKAGE directory under pythondir. Was
|
||||
dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
|
||||
dnl more consistent with the rest of automake.
|
||||
dnl
|
||||
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
|
||||
|
||||
dnl pyexecdir -- directory for installing python extension modules
|
||||
dnl (shared libraries)
|
||||
dnl 3. pyexecdir: directory for installing python extension modules
|
||||
dnl (shared libraries).
|
||||
dnl Query distutils for this directory.
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
|
||||
[am_cv_python_pyexecdir],
|
||||
[if test "x$exec_prefix" = xNONE
|
||||
then
|
||||
am_py_exec_prefix=$am_py_prefix
|
||||
else
|
||||
am_py_exec_prefix=$exec_prefix
|
||||
fi
|
||||
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||
dnl
|
||||
AC_CACHE_CHECK([for $am_display_PYTHON extension module directory (pyexecdir)],
|
||||
[am_cv_python_pyexecdir],
|
||||
[if test "x$am_cv_python_exec_prefix" = x; then
|
||||
am_py_exec_prefix=$am__usable_exec_prefix
|
||||
else
|
||||
am_py_exec_prefix=$am_cv_python_exec_prefix
|
||||
fi
|
||||
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||
$am_python_setup_sysconfig
|
||||
if can_use_sysconfig:
|
||||
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
|
||||
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
|
||||
else:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
|
||||
sys.stdout.write(sitedir)"`
|
||||
case $am_cv_python_pyexecdir in
|
||||
$am_py_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_exec_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
#
|
||||
case $am_cv_python_pyexecdir in
|
||||
$am_py_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_exec_prefix in
|
||||
/usr|/System*) ;;
|
||||
*) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
|
||||
;;
|
||||
esac
|
||||
])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
|
||||
|
||||
dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
|
||||
|
||||
dnl 4. pkgpyexecdir: $(pyexecdir)/$(PACKAGE)
|
||||
dnl
|
||||
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
|
||||
|
||||
dnl Run any user-specified action.
|
||||
$2
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
|
||||
|
|
@ -280,7 +356,7 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
|
|||
sys.exit(sys.hexversion < minverhex)"
|
||||
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
||||
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2021 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -297,4 +373,6 @@ AC_DEFUN([AM_RUN_LOG],
|
|||
echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
|
||||
(exit $ac_status); }])
|
||||
|
||||
m4_include([m4/ax_check_compile_flag.m4])
|
||||
m4_include([m4/nls.m4])
|
||||
m4_include([acinclude.m4])
|
||||
|
|
|
|||
399
configure
vendored
399
configure
vendored
|
|
@ -720,13 +720,14 @@ UNINSTALLNDIFF
|
|||
INSTALLNDIFF
|
||||
BUILDNDIFF
|
||||
NDIFFDIR
|
||||
ENABLE_FUZZING
|
||||
pkgpyexecdir
|
||||
pyexecdir
|
||||
pkgpythondir
|
||||
pythondir
|
||||
PYTHON_PLATFORM
|
||||
PYTHON_EXEC_PREFIX
|
||||
PYTHON_PREFIX
|
||||
PYTHON_PLATFORM
|
||||
PYTHON_VERSION
|
||||
PYTHON
|
||||
LUA_CFLAGS
|
||||
|
|
@ -803,6 +804,10 @@ ac_user_opts='
|
|||
enable_option_checking
|
||||
enable_nls
|
||||
with_localdirs
|
||||
with_python_sys_prefix
|
||||
with_python_prefix
|
||||
with_python_exec_prefix
|
||||
enable_fuzzing
|
||||
with_ndiff
|
||||
with_zenmap
|
||||
with_nping
|
||||
|
|
@ -1460,12 +1465,18 @@ Optional Features:
|
|||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--disable-nls do not use Native Language Support
|
||||
--enable-fuzzing build fuzz targets
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-localdirs Explicitly ask compiler to use
|
||||
/usr/local/{include,libs} if they exist
|
||||
--with-python-sys-prefix
|
||||
use Python's sys.prefix and sys.exec_prefix values
|
||||
--with-python_prefix override the default PYTHON_PREFIX
|
||||
--with-python_exec_prefix
|
||||
override the default PYTHON_EXEC_PREFIX
|
||||
--without-ndiff Skip installation of the Ndiff utility
|
||||
--without-zenmap Skip installation of the Zenmap graphical frontend
|
||||
--without-nping Skip installation of the Nping utility
|
||||
|
|
@ -2943,6 +2954,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
|
||||
printf %s "checking whether NLS is requested... " >&6; }
|
||||
# Check whether --enable-nls was given.
|
||||
|
|
@ -6382,31 +6396,23 @@ fi
|
|||
|
||||
|
||||
if test "$PYTHON" = :; then
|
||||
HAVE_PYTHON=false
|
||||
HAVE_PYTHON=false
|
||||
else
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
|
||||
printf %s "checking for $am_display_PYTHON version... " >&6; }
|
||||
if test ${am_cv_python_version+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
|
||||
am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
|
||||
printf "%s\n" "$am_cv_python_version" >&6; }
|
||||
PYTHON_VERSION=$am_cv_python_version
|
||||
|
||||
|
||||
|
||||
PYTHON_PREFIX='${prefix}'
|
||||
|
||||
PYTHON_EXEC_PREFIX='${exec_prefix}'
|
||||
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
|
||||
printf %s "checking for $am_display_PYTHON platform... " >&6; }
|
||||
if test ${am_cv_python_platform+y}
|
||||
then :
|
||||
|
|
@ -6419,7 +6425,143 @@ printf "%s\n" "$am_cv_python_platform" >&6; }
|
|||
PYTHON_PLATFORM=$am_cv_python_platform
|
||||
|
||||
|
||||
# Just factor out some code duplication.
|
||||
if test "x$prefix" = xNONE; then
|
||||
am__usable_prefix=$ac_default_prefix
|
||||
else
|
||||
am__usable_prefix=$prefix
|
||||
fi
|
||||
|
||||
# Allow user to request using sys.* values from Python,
|
||||
# instead of the GNU $prefix values.
|
||||
|
||||
# Check whether --with-python-sys-prefix was given.
|
||||
if test ${with_python_sys_prefix+y}
|
||||
then :
|
||||
withval=$with_python_sys_prefix; am_use_python_sys=:
|
||||
else $as_nop
|
||||
am_use_python_sys=false
|
||||
fi
|
||||
|
||||
|
||||
# Allow user to override whatever the default Python prefix is.
|
||||
|
||||
# Check whether --with-python_prefix was given.
|
||||
if test ${with_python_prefix+y}
|
||||
then :
|
||||
withval=$with_python_prefix; am_python_prefix_subst=$withval
|
||||
am_cv_python_prefix=$withval
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
|
||||
printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
|
||||
printf "%s\n" "$am_cv_python_prefix" >&6; }
|
||||
else $as_nop
|
||||
|
||||
if $am_use_python_sys; then
|
||||
# using python sys.prefix value, not GNU
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
|
||||
printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
|
||||
if test ${am_cv_python_prefix+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
|
||||
printf "%s\n" "$am_cv_python_prefix" >&6; }
|
||||
|
||||
case $am_cv_python_prefix in
|
||||
$am__usable_prefix*)
|
||||
am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
|
||||
am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
|
||||
;;
|
||||
*)
|
||||
am_python_prefix_subst=$am_cv_python_prefix
|
||||
;;
|
||||
esac
|
||||
else # using GNU prefix value, not python sys.prefix
|
||||
am_python_prefix_subst='${prefix}'
|
||||
am_python_prefix=$am_python_prefix_subst
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
|
||||
printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
|
||||
printf "%s\n" "$am_python_prefix" >&6; }
|
||||
fi
|
||||
fi
|
||||
|
||||
# Substituting python_prefix_subst value.
|
||||
PYTHON_PREFIX=$am_python_prefix_subst
|
||||
|
||||
|
||||
# emacs-page Now do it all over again for Python exec_prefix, but with yet
|
||||
# another conditional: fall back to regular prefix if that was specified.
|
||||
|
||||
# Check whether --with-python_exec_prefix was given.
|
||||
if test ${with_python_exec_prefix+y}
|
||||
then :
|
||||
withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
|
||||
am_cv_python_exec_prefix=$withval
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
|
||||
printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
|
||||
printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
|
||||
else $as_nop
|
||||
|
||||
# no explicit --with-python_exec_prefix, but if
|
||||
# --with-python_prefix was given, use its value for python_exec_prefix too.
|
||||
if test -n "$with_python_prefix"
|
||||
then :
|
||||
am_python_exec_prefix_subst=$with_python_prefix
|
||||
am_cv_python_exec_prefix=$with_python_prefix
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
|
||||
printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
|
||||
printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
|
||||
else $as_nop
|
||||
|
||||
# Set am__usable_exec_prefix whether using GNU or Python values,
|
||||
# since we use that variable for pyexecdir.
|
||||
if test "x$exec_prefix" = xNONE; then
|
||||
am__usable_exec_prefix=$am__usable_prefix
|
||||
else
|
||||
am__usable_exec_prefix=$exec_prefix
|
||||
fi
|
||||
#
|
||||
if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
|
||||
printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
|
||||
if test ${am_cv_python_exec_prefix+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
|
||||
printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
|
||||
case $am_cv_python_exec_prefix in
|
||||
$am__usable_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
|
||||
am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
|
||||
;;
|
||||
*)
|
||||
am_python_exec_prefix_subst=$am_cv_python_exec_prefix
|
||||
;;
|
||||
esac
|
||||
else # using GNU $exec_prefix, not python sys.exec_prefix
|
||||
am_python_exec_prefix_subst='${exec_prefix}'
|
||||
am_python_exec_prefix=$am_python_exec_prefix_subst
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
|
||||
printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
|
||||
printf "%s\n" "$am_python_exec_prefix" >&6; }
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Substituting python_exec_prefix_subst.
|
||||
PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
|
||||
|
||||
|
||||
# Factor out some code duplication into this shell variable.
|
||||
am_python_setup_sysconfig="\
|
||||
import sys
|
||||
# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
||||
|
|
@ -6440,40 +6582,39 @@ except ImportError:
|
|||
pass"
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
|
||||
printf %s "checking for $am_display_PYTHON script directory... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
|
||||
printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
|
||||
if test ${am_cv_python_pythondir+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
if test "x$prefix" = xNONE
|
||||
then
|
||||
am_py_prefix=$ac_default_prefix
|
||||
else
|
||||
am_py_prefix=$prefix
|
||||
fi
|
||||
am_cv_python_pythondir=`$PYTHON -c "
|
||||
if test "x$am_cv_python_prefix" = x; then
|
||||
am_py_prefix=$am__usable_prefix
|
||||
else
|
||||
am_py_prefix=$am_cv_python_prefix
|
||||
fi
|
||||
am_cv_python_pythondir=`$PYTHON -c "
|
||||
$am_python_setup_sysconfig
|
||||
if can_use_sysconfig:
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||
else:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||
sys.stdout.write(sitedir)"`
|
||||
case $am_cv_python_pythondir in
|
||||
$am_py_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
#
|
||||
case $am_cv_python_pythondir in
|
||||
$am_py_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_prefix in
|
||||
/usr|/System*) ;;
|
||||
*) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
|
||||
|
|
@ -6481,44 +6622,42 @@ printf "%s\n" "$am_cv_python_pythondir" >&6; }
|
|||
pythondir=$am_cv_python_pythondir
|
||||
|
||||
|
||||
|
||||
pkgpythondir=\${pythondir}/$PACKAGE
|
||||
pkgpythondir=\${pythondir}/$PACKAGE
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
|
||||
printf %s "checking for $am_display_PYTHON extension module directory... " >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
|
||||
printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
|
||||
if test ${am_cv_python_pyexecdir+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
if test "x$exec_prefix" = xNONE
|
||||
then
|
||||
am_py_exec_prefix=$am_py_prefix
|
||||
else
|
||||
am_py_exec_prefix=$exec_prefix
|
||||
fi
|
||||
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||
if test "x$am_cv_python_exec_prefix" = x; then
|
||||
am_py_exec_prefix=$am__usable_exec_prefix
|
||||
else
|
||||
am_py_exec_prefix=$am_cv_python_exec_prefix
|
||||
fi
|
||||
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||
$am_python_setup_sysconfig
|
||||
if can_use_sysconfig:
|
||||
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
|
||||
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
|
||||
else:
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
|
||||
from distutils import sysconfig
|
||||
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
|
||||
sys.stdout.write(sitedir)"`
|
||||
case $am_cv_python_pyexecdir in
|
||||
$am_py_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_exec_prefix in
|
||||
/usr|/System*) ;;
|
||||
*)
|
||||
am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
#
|
||||
case $am_cv_python_pyexecdir in
|
||||
$am_py_exec_prefix*)
|
||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
|
||||
;;
|
||||
*)
|
||||
case $am_py_exec_prefix in
|
||||
/usr|/System*) ;;
|
||||
*) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
|
||||
|
|
@ -6526,15 +6665,13 @@ printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
|
|||
pyexecdir=$am_cv_python_pyexecdir
|
||||
|
||||
|
||||
|
||||
pkgpyexecdir=\${pyexecdir}/$PACKAGE
|
||||
pkgpyexecdir=\${pyexecdir}/$PACKAGE
|
||||
|
||||
|
||||
HAVE_PYTHON=true
|
||||
fi
|
||||
|
||||
|
||||
|
||||
PY_BUILD_OK=false
|
||||
if $HAVE_PYTHON ; then
|
||||
|
||||
|
|
@ -6566,6 +6703,129 @@ printf "%s\n" "$py_have_build" >&6; }
|
|||
fi
|
||||
fi
|
||||
|
||||
# Check whether --enable-fuzzing was given.
|
||||
if test ${enable_fuzzing+y}
|
||||
then :
|
||||
enableval=$enable_fuzzing;
|
||||
else $as_nop
|
||||
enable_fuzzing=no
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_fuzzing" = "xyes"
|
||||
then :
|
||||
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer" >&5
|
||||
printf %s "checking whether C compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer... " >&6; }
|
||||
if test ${ax_cv_check_cflags__FUZZ_FLAGS+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
|
||||
ax_check_save_flags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"
|
||||
then :
|
||||
ax_cv_check_cflags__FUZZ_FLAGS=yes
|
||||
else $as_nop
|
||||
ax_cv_check_cflags__FUZZ_FLAGS=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CFLAGS=$ax_check_save_flags
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__FUZZ_FLAGS" >&5
|
||||
printf "%s\n" "$ax_cv_check_cflags__FUZZ_FLAGS" >&6; }
|
||||
if test "x$ax_cv_check_cflags__FUZZ_FLAGS" = xyes
|
||||
then :
|
||||
CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
else $as_nop
|
||||
as_fn_error $? "$CC does not support fuzzing" "$LINENO" 5
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer" >&5
|
||||
printf %s "checking whether C++ compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer... " >&6; }
|
||||
if test ${ax_cv_check_cxxflags__FUZZ_FLAGS+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
|
||||
ax_check_save_flags=$CXXFLAGS
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ax_cv_check_cxxflags__FUZZ_FLAGS=yes
|
||||
else $as_nop
|
||||
ax_cv_check_cxxflags__FUZZ_FLAGS=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CXXFLAGS=$ax_check_save_flags
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags__FUZZ_FLAGS" >&5
|
||||
printf "%s\n" "$ax_cv_check_cxxflags__FUZZ_FLAGS" >&6; }
|
||||
if test "x$ax_cv_check_cxxflags__FUZZ_FLAGS" = xyes
|
||||
then :
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
else $as_nop
|
||||
as_fn_error $? "$CXX does not support fuzzing" "$LINENO" 5
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
|
||||
|
||||
printf "%s\n" "#define ENABLE_FUZZING 1" >>confdefs.h
|
||||
|
||||
|
||||
fi
|
||||
ENABLE_FUZZING=$enable_fuzzing
|
||||
|
||||
|
||||
NDIFFDIR=ndiff
|
||||
|
||||
# Do they want Ndiff?
|
||||
|
|
@ -8883,7 +9143,6 @@ then :
|
|||
fi
|
||||
|
||||
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
|
|
|
|||
28
configure.ac
28
configure.ac
|
|
@ -3,6 +3,10 @@ AC_PREREQ(2.13)
|
|||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(nmap.cc)
|
||||
AC_CONFIG_MACRO_DIRS([m4])
|
||||
|
||||
dnl Complain if macros from autoconf-archive aren't available
|
||||
m4_pattern_forbid([^AX_])
|
||||
|
||||
dnl Give us the --enable-nls option, to choose which translated man pages get
|
||||
dnl installed. This gets replaced with AM_GNU_GETTEXT for full gettext support.
|
||||
|
|
@ -251,6 +255,30 @@ if $HAVE_PYTHON ; then
|
|||
fi
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE([fuzzing],
|
||||
AS_HELP_STRING([--enable-fuzzing],
|
||||
[build fuzz targets]),
|
||||
[],
|
||||
[enable_fuzzing=no])
|
||||
AS_IF([test "x$enable_fuzzing" = "xyes"], [
|
||||
m4_define([FUZZ_FLAGS],
|
||||
[-fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer])
|
||||
AC_LANG_PUSH([C])
|
||||
AX_CHECK_COMPILE_FLAG([FUZZ_FLAGS],
|
||||
[CFLAGS="$CFLAGS FUZZ_FLAGS"],
|
||||
[AC_MSG_ERROR([$CC does not support fuzzing])])
|
||||
AC_LANG_POP([C])
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
AX_CHECK_COMPILE_FLAG([FUZZ_FLAGS],
|
||||
[CXXFLAGS="$CXXFLAGS FUZZ_FLAGS"],
|
||||
[AC_MSG_ERROR([$CXX does not support fuzzing])])
|
||||
AC_LANG_POP([C++])
|
||||
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
|
||||
AC_DEFINE([ENABLE_FUZZING], [1], [Fuzzing harness enabled])
|
||||
])
|
||||
AC_SUBST([ENABLE_FUZZING], [$enable_fuzzing])
|
||||
|
||||
NDIFFDIR=ndiff
|
||||
|
||||
# Do they want Ndiff?
|
||||
|
|
|
|||
17
fuzz/README.md
Normal file
17
fuzz/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Nmap Fuzzing
|
||||
|
||||
This directory contains libFuzzer-based fuzz targets.
|
||||
|
||||
Each fuzz target should expose
|
||||
|
||||
```c++
|
||||
extern "C"
|
||||
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
|
||||
```
|
||||
|
||||
Targets should avoid sockets, timers, privilege changes, and other external
|
||||
dependencies whenever possible.
|
||||
|
||||
Prefer fuzzing isolated parsing functions.
|
||||
|
||||
Shared helper routines belong in common.cc.
|
||||
20
fuzz/common.cc
Normal file
20
fuzz/common.cc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#include "common.h"
|
||||
|
||||
#include <mutex>
|
||||
|
||||
void fuzz_init(void)
|
||||
{
|
||||
static std::once_flag initialized;
|
||||
|
||||
std::call_once(initialized, []() {
|
||||
/*
|
||||
* Future:
|
||||
*
|
||||
* - initialize Nsock
|
||||
* - suppress logging
|
||||
* - initialize OpenSSL
|
||||
* - initialize Lua
|
||||
* - etc.
|
||||
*/
|
||||
});
|
||||
}
|
||||
9
fuzz/common.h
Normal file
9
fuzz/common.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef NMAP_FUZZ_COMMON_H
|
||||
#define NMAP_FUZZ_COMMON_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void fuzz_init(void);
|
||||
|
||||
#endif
|
||||
16
fuzz/fuzz_dns_packet_parseFromBuffer.cc
Normal file
16
fuzz/fuzz_dns_packet_parseFromBuffer.cc
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#include "common.h"
|
||||
#include "../libnetutil/massdns.h"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
extern "C"
|
||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
||||
{
|
||||
fuzz_init();
|
||||
|
||||
DNS::Packet p;
|
||||
size_t plen = p.parseFromBuffer(data, size);
|
||||
|
||||
return size >= plen ? 0 : -1;
|
||||
}
|
||||
74
m4/ax_check_compile_flag.m4
Normal file
74
m4/ax_check_compile_flag.m4
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 4
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_VAR_IF(CACHEVAR,yes,
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
||||
32
m4/nls.m4
Normal file
32
m4/nls.m4
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# nls.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl
|
||||
dnl This file can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
AC_DEFUN([AM_NLS],
|
||||
[
|
||||
AC_MSG_CHECKING([whether NLS is requested])
|
||||
dnl Default is enabled NLS
|
||||
AC_ARG_ENABLE([nls],
|
||||
[ --disable-nls do not use Native Language Support],
|
||||
USE_NLS=$enableval, USE_NLS=yes)
|
||||
AC_MSG_RESULT([$USE_NLS])
|
||||
AC_SUBST([USE_NLS])
|
||||
])
|
||||
|
|
@ -195,3 +195,6 @@
|
|||
#undef HAVE_LUA_5_4_LUA_H
|
||||
#undef HAVE_LUA_H
|
||||
#undef HAVE_LUA_LUA_H
|
||||
|
||||
/* Fuzzing harness enabled */
|
||||
#undef ENABLE_FUZZING
|
||||
|
|
|
|||
852
ncat/configure
vendored
852
ncat/configure
vendored
|
|
@ -649,6 +649,10 @@ ac_header_c_list=
|
|||
ac_func_c_list=
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
ENABLE_FUZZING
|
||||
ac_ct_CXX
|
||||
CXXFLAGS
|
||||
CXX
|
||||
LUA_DIST_CLEAN
|
||||
LUA_CLEAN
|
||||
LUA_BUILD
|
||||
|
|
@ -732,6 +736,7 @@ enable_option_checking
|
|||
with_openssl
|
||||
with_libpcap
|
||||
with_liblua
|
||||
enable_fuzzing
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
|
|
@ -741,7 +746,10 @@ CFLAGS
|
|||
LDFLAGS
|
||||
LIBS
|
||||
CPPFLAGS
|
||||
CPP'
|
||||
CPP
|
||||
CXX
|
||||
CXXFLAGS
|
||||
CCC'
|
||||
|
||||
|
||||
# Initialize some variables set by options.
|
||||
|
|
@ -1358,6 +1366,12 @@ if test -n "$ac_init_help"; then
|
|||
|
||||
cat <<\_ACEOF
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--enable-fuzzing build fuzz targets
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
|
|
@ -1379,6 +1393,8 @@ Some influential environment variables:
|
|||
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
|
||||
you have headers in a nonstandard directory <include dir>
|
||||
CPP C preprocessor
|
||||
CXX C++ compiler command
|
||||
CXXFLAGS C++ compiler flags
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
|
|
@ -1831,6 +1847,45 @@ fi
|
|||
as_fn_set_status $ac_retval
|
||||
|
||||
} # ac_fn_c_try_cpp
|
||||
|
||||
# ac_fn_cxx_try_compile LINENO
|
||||
# ----------------------------
|
||||
# Try to compile conftest.$ac_ext, and return whether this succeeded.
|
||||
ac_fn_cxx_try_compile ()
|
||||
{
|
||||
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
||||
rm -f conftest.$ac_objext conftest.beam
|
||||
if { { ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
printf "%s\n" "$ac_try_echo"; } >&5
|
||||
(eval "$ac_compile") 2>conftest.err
|
||||
ac_status=$?
|
||||
if test -s conftest.err; then
|
||||
grep -v '^ *+' conftest.err >conftest.er1
|
||||
cat conftest.er1 >&5
|
||||
mv -f conftest.er1 conftest.err
|
||||
fi
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; } && {
|
||||
test -z "$ac_cxx_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest.$ac_objext
|
||||
then :
|
||||
ac_retval=0
|
||||
else $as_nop
|
||||
printf "%s\n" "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_retval=1
|
||||
fi
|
||||
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
|
||||
as_fn_set_status $ac_retval
|
||||
|
||||
} # ac_fn_cxx_try_compile
|
||||
ac_configure_args_raw=
|
||||
for ac_arg
|
||||
do
|
||||
|
|
@ -2450,6 +2505,222 @@ as_fn_append ac_func_c_list " vfork HAVE_VFORK"
|
|||
as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H"
|
||||
as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H"
|
||||
as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF"
|
||||
# Test code for whether the C++ compiler supports C++98 (global declarations)
|
||||
ac_cxx_conftest_cxx98_globals='
|
||||
// Does the compiler advertise C++98 conformance?
|
||||
#if !defined __cplusplus || __cplusplus < 199711L
|
||||
# error "Compiler does not advertise C++98 conformance"
|
||||
#endif
|
||||
|
||||
// These inclusions are to reject old compilers that
|
||||
// lack the unsuffixed header files.
|
||||
#include <cstdlib>
|
||||
#include <exception>
|
||||
|
||||
// <cassert> and <cstring> are *not* freestanding headers in C++98.
|
||||
extern void assert (int);
|
||||
namespace std {
|
||||
extern int strcmp (const char *, const char *);
|
||||
}
|
||||
|
||||
// Namespaces, exceptions, and templates were all added after "C++ 2.0".
|
||||
using std::exception;
|
||||
using std::strcmp;
|
||||
|
||||
namespace {
|
||||
|
||||
void test_exception_syntax()
|
||||
{
|
||||
try {
|
||||
throw "test";
|
||||
} catch (const char *s) {
|
||||
// Extra parentheses suppress a warning when building autoconf itself,
|
||||
// due to lint rules shared with more typical C programs.
|
||||
assert (!(strcmp) (s, "test"));
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T> struct test_template
|
||||
{
|
||||
T const val;
|
||||
explicit test_template(T t) : val(t) {}
|
||||
template <typename U> T add(U u) { return static_cast<T>(u) + val; }
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
'
|
||||
|
||||
# Test code for whether the C++ compiler supports C++98 (body of main)
|
||||
ac_cxx_conftest_cxx98_main='
|
||||
assert (argc);
|
||||
assert (! argv[0]);
|
||||
{
|
||||
test_exception_syntax ();
|
||||
test_template<double> tt (2.0);
|
||||
assert (tt.add (4) == 6.0);
|
||||
assert (true && !false);
|
||||
}
|
||||
'
|
||||
|
||||
# Test code for whether the C++ compiler supports C++11 (global declarations)
|
||||
ac_cxx_conftest_cxx11_globals='
|
||||
// Does the compiler advertise C++ 2011 conformance?
|
||||
#if !defined __cplusplus || __cplusplus < 201103L
|
||||
# error "Compiler does not advertise C++11 conformance"
|
||||
#endif
|
||||
|
||||
namespace cxx11test
|
||||
{
|
||||
constexpr int get_val() { return 20; }
|
||||
|
||||
struct testinit
|
||||
{
|
||||
int i;
|
||||
double d;
|
||||
};
|
||||
|
||||
class delegate
|
||||
{
|
||||
public:
|
||||
delegate(int n) : n(n) {}
|
||||
delegate(): delegate(2354) {}
|
||||
|
||||
virtual int getval() { return this->n; };
|
||||
protected:
|
||||
int n;
|
||||
};
|
||||
|
||||
class overridden : public delegate
|
||||
{
|
||||
public:
|
||||
overridden(int n): delegate(n) {}
|
||||
virtual int getval() override final { return this->n * 2; }
|
||||
};
|
||||
|
||||
class nocopy
|
||||
{
|
||||
public:
|
||||
nocopy(int i): i(i) {}
|
||||
nocopy() = default;
|
||||
nocopy(const nocopy&) = delete;
|
||||
nocopy & operator=(const nocopy&) = delete;
|
||||
private:
|
||||
int i;
|
||||
};
|
||||
|
||||
// for testing lambda expressions
|
||||
template <typename Ret, typename Fn> Ret eval(Fn f, Ret v)
|
||||
{
|
||||
return f(v);
|
||||
}
|
||||
|
||||
// for testing variadic templates and trailing return types
|
||||
template <typename V> auto sum(V first) -> V
|
||||
{
|
||||
return first;
|
||||
}
|
||||
template <typename V, typename... Args> auto sum(V first, Args... rest) -> V
|
||||
{
|
||||
return first + sum(rest...);
|
||||
}
|
||||
}
|
||||
'
|
||||
|
||||
# Test code for whether the C++ compiler supports C++11 (body of main)
|
||||
ac_cxx_conftest_cxx11_main='
|
||||
{
|
||||
// Test auto and decltype
|
||||
auto a1 = 6538;
|
||||
auto a2 = 48573953.4;
|
||||
auto a3 = "String literal";
|
||||
|
||||
int total = 0;
|
||||
for (auto i = a3; *i; ++i) { total += *i; }
|
||||
|
||||
decltype(a2) a4 = 34895.034;
|
||||
}
|
||||
{
|
||||
// Test constexpr
|
||||
short sa[cxx11test::get_val()] = { 0 };
|
||||
}
|
||||
{
|
||||
// Test initializer lists
|
||||
cxx11test::testinit il = { 4323, 435234.23544 };
|
||||
}
|
||||
{
|
||||
// Test range-based for
|
||||
int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3,
|
||||
14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
|
||||
for (auto &x : array) { x += 23; }
|
||||
}
|
||||
{
|
||||
// Test lambda expressions
|
||||
using cxx11test::eval;
|
||||
assert (eval ([](int x) { return x*2; }, 21) == 42);
|
||||
double d = 2.0;
|
||||
assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0);
|
||||
assert (d == 5.0);
|
||||
assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0);
|
||||
assert (d == 5.0);
|
||||
}
|
||||
{
|
||||
// Test use of variadic templates
|
||||
using cxx11test::sum;
|
||||
auto a = sum(1);
|
||||
auto b = sum(1, 2);
|
||||
auto c = sum(1.0, 2.0, 3.0);
|
||||
}
|
||||
{
|
||||
// Test constructor delegation
|
||||
cxx11test::delegate d1;
|
||||
cxx11test::delegate d2();
|
||||
cxx11test::delegate d3(45);
|
||||
}
|
||||
{
|
||||
// Test override and final
|
||||
cxx11test::overridden o1(55464);
|
||||
}
|
||||
{
|
||||
// Test nullptr
|
||||
char *c = nullptr;
|
||||
}
|
||||
{
|
||||
// Test template brackets
|
||||
test_template<::test_template<int>> v(test_template<int>(12));
|
||||
}
|
||||
{
|
||||
// Unicode literals
|
||||
char const *utf8 = u8"UTF-8 string \u2500";
|
||||
char16_t const *utf16 = u"UTF-8 string \u2500";
|
||||
char32_t const *utf32 = U"UTF-32 string \u2500";
|
||||
}
|
||||
'
|
||||
|
||||
# Test code for whether the C compiler supports C++11 (complete).
|
||||
ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals}
|
||||
${ac_cxx_conftest_cxx11_globals}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int ok = 0;
|
||||
${ac_cxx_conftest_cxx98_main}
|
||||
${ac_cxx_conftest_cxx11_main}
|
||||
return ok;
|
||||
}
|
||||
"
|
||||
|
||||
# Test code for whether the C compiler supports C++98 (complete).
|
||||
ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals}
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int ok = 0;
|
||||
${ac_cxx_conftest_cxx98_main}
|
||||
return ok;
|
||||
}
|
||||
"
|
||||
|
||||
|
||||
# Auxiliary files required by this configure script.
|
||||
ac_aux_files="install-sh config.guess config.sub"
|
||||
|
|
@ -2631,6 +2902,66 @@ ac_config_headers="$ac_config_headers config.h"
|
|||
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -5427,8 +5758,12 @@ else $as_nop
|
|||
/* end confdefs.h. */
|
||||
|
||||
#include <stdio.h>
|
||||
extern char pcap_version[];
|
||||
int main() {
|
||||
extern char pcap_version;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
int major, minor1, minor2;
|
||||
sscanf(pcap_version,"%d.%d.%d", &major, &minor1, &minor2);
|
||||
if (major > 0)
|
||||
|
|
@ -5437,9 +5772,10 @@ int main() {
|
|||
return 1;
|
||||
if (minor2 < 4)
|
||||
return 1;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
then :
|
||||
|
|
@ -5465,8 +5801,12 @@ else $as_nop
|
|||
#ifdef HAVE_NET_BPF_H
|
||||
#include <net/bpf.h>
|
||||
#endif
|
||||
extern char pcap_version[];
|
||||
int main() {
|
||||
extern char pcap_version;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
int major, minor;
|
||||
sscanf(pcap_version,"%d.%d", &major, &minor);
|
||||
if ((major == 1 && minor >= 1) || major > 1)
|
||||
|
|
@ -5477,9 +5817,10 @@ int main() {
|
|||
return 1;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
then :
|
||||
|
|
@ -6028,6 +6369,503 @@ fi
|
|||
|
||||
|
||||
|
||||
# Check whether --enable-fuzzing was given.
|
||||
if test ${enable_fuzzing+y}
|
||||
then :
|
||||
enableval=$enable_fuzzing;
|
||||
else $as_nop
|
||||
enable_fuzzing=no
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
if test -z "$CXX"; then
|
||||
if test -n "$CCC"; then
|
||||
CXX=$CCC
|
||||
else
|
||||
if test -n "$ac_tool_prefix"; then
|
||||
for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++
|
||||
do
|
||||
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
printf %s "checking for $ac_word... " >&6; }
|
||||
if test ${ac_cv_prog_CXX+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
if test -n "$CXX"; then
|
||||
ac_cv_prog_CXX="$CXX" # Let the user override the test.
|
||||
else
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
|
||||
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
fi
|
||||
fi
|
||||
CXX=$ac_cv_prog_CXX
|
||||
if test -n "$CXX"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
|
||||
printf "%s\n" "$CXX" >&6; }
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$CXX" && break
|
||||
done
|
||||
fi
|
||||
if test -z "$CXX"; then
|
||||
ac_ct_CXX=$CXX
|
||||
for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++
|
||||
do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
printf %s "checking for $ac_word... " >&6; }
|
||||
if test ${ac_cv_prog_ac_ct_CXX+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
if test -n "$ac_ct_CXX"; then
|
||||
ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
|
||||
else
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
case $as_dir in #(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
esac
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
|
||||
ac_cv_prog_ac_ct_CXX="$ac_prog"
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
fi
|
||||
fi
|
||||
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
|
||||
if test -n "$ac_ct_CXX"; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
|
||||
printf "%s\n" "$ac_ct_CXX" >&6; }
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
test -n "$ac_ct_CXX" && break
|
||||
done
|
||||
|
||||
if test "x$ac_ct_CXX" = x; then
|
||||
CXX="g++"
|
||||
else
|
||||
case $cross_compiling:$ac_tool_warned in
|
||||
yes:)
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
|
||||
printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
|
||||
ac_tool_warned=yes ;;
|
||||
esac
|
||||
CXX=$ac_ct_CXX
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
# Provide some information about the compiler.
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
|
||||
set X $ac_compile
|
||||
ac_compiler=$2
|
||||
for ac_option in --version -v -V -qversion; do
|
||||
{ { ac_try="$ac_compiler $ac_option >&5"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
printf "%s\n" "$ac_try_echo"; } >&5
|
||||
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
|
||||
ac_status=$?
|
||||
if test -s conftest.err; then
|
||||
sed '10a\
|
||||
... rest of stderr output deleted ...
|
||||
10q' conftest.err >conftest.er1
|
||||
cat conftest.er1 >&5
|
||||
fi
|
||||
rm -f conftest.er1 conftest.err
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }
|
||||
done
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5
|
||||
printf %s "checking whether the compiler supports GNU C++... " >&6; }
|
||||
if test ${ac_cv_cxx_compiler_gnu+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
#ifndef __GNUC__
|
||||
choke me
|
||||
#endif
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ac_compiler_gnu=yes
|
||||
else $as_nop
|
||||
ac_compiler_gnu=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
|
||||
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
|
||||
printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; }
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
if test $ac_compiler_gnu = yes; then
|
||||
GXX=yes
|
||||
else
|
||||
GXX=
|
||||
fi
|
||||
ac_test_CXXFLAGS=${CXXFLAGS+y}
|
||||
ac_save_CXXFLAGS=$CXXFLAGS
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
|
||||
printf %s "checking whether $CXX accepts -g... " >&6; }
|
||||
if test ${ac_cv_prog_cxx_g+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
|
||||
ac_cxx_werror_flag=yes
|
||||
ac_cv_prog_cxx_g=no
|
||||
CXXFLAGS="-g"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ac_cv_prog_cxx_g=yes
|
||||
else $as_nop
|
||||
CXXFLAGS=""
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
|
||||
else $as_nop
|
||||
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
|
||||
CXXFLAGS="-g"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ac_cv_prog_cxx_g=yes
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
|
||||
printf "%s\n" "$ac_cv_prog_cxx_g" >&6; }
|
||||
if test $ac_test_CXXFLAGS; then
|
||||
CXXFLAGS=$ac_save_CXXFLAGS
|
||||
elif test $ac_cv_prog_cxx_g = yes; then
|
||||
if test "$GXX" = yes; then
|
||||
CXXFLAGS="-g -O2"
|
||||
else
|
||||
CXXFLAGS="-g"
|
||||
fi
|
||||
else
|
||||
if test "$GXX" = yes; then
|
||||
CXXFLAGS="-O2"
|
||||
else
|
||||
CXXFLAGS=
|
||||
fi
|
||||
fi
|
||||
ac_prog_cxx_stdcxx=no
|
||||
if test x$ac_prog_cxx_stdcxx = xno
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
|
||||
printf %s "checking for $CXX option to enable C++11 features... " >&6; }
|
||||
if test ${ac_cv_prog_cxx_11+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
ac_cv_prog_cxx_11=no
|
||||
ac_save_CXX=$CXX
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
$ac_cxx_conftest_cxx11_program
|
||||
_ACEOF
|
||||
for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA
|
||||
do
|
||||
CXX="$ac_save_CXX $ac_arg"
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ac_cv_prog_cxx_cxx11=$ac_arg
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam
|
||||
test "x$ac_cv_prog_cxx_cxx11" != "xno" && break
|
||||
done
|
||||
rm -f conftest.$ac_ext
|
||||
CXX=$ac_save_CXX
|
||||
fi
|
||||
|
||||
if test "x$ac_cv_prog_cxx_cxx11" = xno
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
|
||||
printf "%s\n" "unsupported" >&6; }
|
||||
else $as_nop
|
||||
if test "x$ac_cv_prog_cxx_cxx11" = x
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
|
||||
printf "%s\n" "none needed" >&6; }
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5
|
||||
printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; }
|
||||
CXX="$CXX $ac_cv_prog_cxx_cxx11"
|
||||
fi
|
||||
ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11
|
||||
ac_prog_cxx_stdcxx=cxx11
|
||||
fi
|
||||
fi
|
||||
if test x$ac_prog_cxx_stdcxx = xno
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
|
||||
printf %s "checking for $CXX option to enable C++98 features... " >&6; }
|
||||
if test ${ac_cv_prog_cxx_98+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
ac_cv_prog_cxx_98=no
|
||||
ac_save_CXX=$CXX
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
$ac_cxx_conftest_cxx98_program
|
||||
_ACEOF
|
||||
for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA
|
||||
do
|
||||
CXX="$ac_save_CXX $ac_arg"
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ac_cv_prog_cxx_cxx98=$ac_arg
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam
|
||||
test "x$ac_cv_prog_cxx_cxx98" != "xno" && break
|
||||
done
|
||||
rm -f conftest.$ac_ext
|
||||
CXX=$ac_save_CXX
|
||||
fi
|
||||
|
||||
if test "x$ac_cv_prog_cxx_cxx98" = xno
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
|
||||
printf "%s\n" "unsupported" >&6; }
|
||||
else $as_nop
|
||||
if test "x$ac_cv_prog_cxx_cxx98" = x
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
|
||||
printf "%s\n" "none needed" >&6; }
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5
|
||||
printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; }
|
||||
CXX="$CXX $ac_cv_prog_cxx_cxx98"
|
||||
fi
|
||||
ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98
|
||||
ac_prog_cxx_stdcxx=cxx98
|
||||
fi
|
||||
fi
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
|
||||
if test "x$enable_fuzzing" = "xyes"
|
||||
then :
|
||||
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer" >&5
|
||||
printf %s "checking whether C compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer... " >&6; }
|
||||
if test ${ax_cv_check_cflags__FUZZ_FLAGS+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
|
||||
ax_check_save_flags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"
|
||||
then :
|
||||
ax_cv_check_cflags__FUZZ_FLAGS=yes
|
||||
else $as_nop
|
||||
ax_cv_check_cflags__FUZZ_FLAGS=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CFLAGS=$ax_check_save_flags
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__FUZZ_FLAGS" >&5
|
||||
printf "%s\n" "$ax_cv_check_cflags__FUZZ_FLAGS" >&6; }
|
||||
if test "x$ax_cv_check_cflags__FUZZ_FLAGS" = xyes
|
||||
then :
|
||||
CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
else $as_nop
|
||||
as_fn_error $? "$CC does not support fuzzing" "$LINENO" 5
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer" >&5
|
||||
printf %s "checking whether C++ compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer... " >&6; }
|
||||
if test ${ax_cv_check_cxxflags__FUZZ_FLAGS+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
|
||||
ax_check_save_flags=$CXXFLAGS
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ax_cv_check_cxxflags__FUZZ_FLAGS=yes
|
||||
else $as_nop
|
||||
ax_cv_check_cxxflags__FUZZ_FLAGS=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CXXFLAGS=$ax_check_save_flags
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags__FUZZ_FLAGS" >&5
|
||||
printf "%s\n" "$ax_cv_check_cxxflags__FUZZ_FLAGS" >&6; }
|
||||
if test "x$ax_cv_check_cxxflags__FUZZ_FLAGS" = xyes
|
||||
then :
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
else $as_nop
|
||||
as_fn_error $? "$CXX does not support fuzzing" "$LINENO" 5
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
|
||||
|
||||
printf "%s\n" "#define ENABLE_FUZZING 1" >>confdefs.h
|
||||
|
||||
|
||||
fi
|
||||
ENABLE_FUZZING=$enable_fuzzing
|
||||
|
||||
|
||||
|
||||
ac_config_files="$ac_config_files Makefile"
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ AC_INIT(ncat_main.c)
|
|||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
m4_include([../acinclude.m4])
|
||||
m4_include([../m4/ax_check_compile_flag.m4])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
|
|
@ -317,6 +318,29 @@ AC_SUBST(LUA_BUILD)
|
|||
AC_SUBST(LUA_CLEAN)
|
||||
AC_SUBST(LUA_DIST_CLEAN)
|
||||
|
||||
AC_ARG_ENABLE([fuzzing],
|
||||
AS_HELP_STRING([--enable-fuzzing],
|
||||
[build fuzz targets]),
|
||||
[],
|
||||
[enable_fuzzing=no])
|
||||
AS_IF([test "x$enable_fuzzing" = "xyes"], [
|
||||
m4_define([FUZZ_FLAGS],
|
||||
[-fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer])
|
||||
AC_LANG_PUSH([C])
|
||||
AX_CHECK_COMPILE_FLAG([FUZZ_FLAGS],
|
||||
[CFLAGS="$CFLAGS FUZZ_FLAGS"],
|
||||
[AC_MSG_ERROR([$CC does not support fuzzing])])
|
||||
AC_LANG_POP([C])
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
AX_CHECK_COMPILE_FLAG([FUZZ_FLAGS],
|
||||
[CXXFLAGS="$CXXFLAGS FUZZ_FLAGS"],
|
||||
[AC_MSG_ERROR([$CXX does not support fuzzing])])
|
||||
AC_LANG_POP([C++])
|
||||
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
|
||||
AC_DEFINE([ENABLE_FUZZING], [1], [Fuzzing harness enabled])
|
||||
])
|
||||
AC_SUBST([ENABLE_FUZZING], [$enable_fuzzing])
|
||||
|
||||
|
||||
AC_CONFIG_FILES(Makefile)
|
||||
|
|
|
|||
|
|
@ -178,4 +178,7 @@ extern "C" int gethostname (char *, unsigned int);
|
|||
#undef HAVE_LUA_H
|
||||
#undef HAVE_LUA_LUA_H
|
||||
|
||||
/* Fuzzing harness enabled */
|
||||
#undef ENABLE_FUZZING
|
||||
|
||||
#endif /* CONFIG_H */
|
||||
|
|
|
|||
214
nping/configure
vendored
214
nping/configure
vendored
|
|
@ -661,6 +661,7 @@ PCAP_CLEAN
|
|||
PCAP_BUILD
|
||||
PCAP_DEPENDS
|
||||
OPENSSL_LIBS
|
||||
ENABLE_FUZZING
|
||||
STRIP
|
||||
INSTALL_DATA
|
||||
INSTALL_SCRIPT
|
||||
|
|
@ -728,6 +729,7 @@ ac_subst_files=''
|
|||
ac_user_opts='
|
||||
enable_option_checking
|
||||
with_localdirs
|
||||
enable_fuzzing
|
||||
with_openssl
|
||||
with_libpcap
|
||||
with_libdnet
|
||||
|
|
@ -1360,6 +1362,12 @@ if test -n "$ac_init_help"; then
|
|||
|
||||
cat <<\_ACEOF
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--enable-fuzzing build fuzz targets
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
|
|
@ -2775,6 +2783,67 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|||
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -5645,6 +5714,129 @@ then :
|
|||
fi
|
||||
|
||||
|
||||
# Check whether --enable-fuzzing was given.
|
||||
if test ${enable_fuzzing+y}
|
||||
then :
|
||||
enableval=$enable_fuzzing;
|
||||
else $as_nop
|
||||
enable_fuzzing=no
|
||||
fi
|
||||
|
||||
|
||||
if test "x$enable_fuzzing" = "xyes"
|
||||
then :
|
||||
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer" >&5
|
||||
printf %s "checking whether C compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer... " >&6; }
|
||||
if test ${ax_cv_check_cflags__FUZZ_FLAGS+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
|
||||
ax_check_save_flags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"
|
||||
then :
|
||||
ax_cv_check_cflags__FUZZ_FLAGS=yes
|
||||
else $as_nop
|
||||
ax_cv_check_cflags__FUZZ_FLAGS=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CFLAGS=$ax_check_save_flags
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__FUZZ_FLAGS" >&5
|
||||
printf "%s\n" "$ax_cv_check_cflags__FUZZ_FLAGS" >&6; }
|
||||
if test "x$ax_cv_check_cflags__FUZZ_FLAGS" = xyes
|
||||
then :
|
||||
CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
else $as_nop
|
||||
as_fn_error $? "$CC does not support fuzzing" "$LINENO" 5
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer" >&5
|
||||
printf %s "checking whether C++ compiler accepts -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer... " >&6; }
|
||||
if test ${ax_cv_check_cxxflags__FUZZ_FLAGS+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
|
||||
ax_check_save_flags=$CXXFLAGS
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"
|
||||
then :
|
||||
ax_cv_check_cxxflags__FUZZ_FLAGS=yes
|
||||
else $as_nop
|
||||
ax_cv_check_cxxflags__FUZZ_FLAGS=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CXXFLAGS=$ax_check_save_flags
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags__FUZZ_FLAGS" >&5
|
||||
printf "%s\n" "$ax_cv_check_cxxflags__FUZZ_FLAGS" >&6; }
|
||||
if test "x$ax_cv_check_cxxflags__FUZZ_FLAGS" = xyes
|
||||
then :
|
||||
CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer"
|
||||
else $as_nop
|
||||
as_fn_error $? "$CXX does not support fuzzing" "$LINENO" 5
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
|
||||
|
||||
printf "%s\n" "#define ENABLE_FUZZING 1" >>confdefs.h
|
||||
|
||||
|
||||
fi
|
||||
ENABLE_FUZZING=$enable_fuzzing
|
||||
|
||||
|
||||
# We test whether they specified openssl desires explicitly
|
||||
use_openssl="yes"
|
||||
specialssldir=""
|
||||
|
|
@ -6059,8 +6251,12 @@ else $as_nop
|
|||
/* end confdefs.h. */
|
||||
|
||||
#include <stdio.h>
|
||||
extern char pcap_version[];
|
||||
int main() {
|
||||
extern char pcap_version;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
int major, minor1, minor2;
|
||||
sscanf(pcap_version,"%d.%d.%d", &major, &minor1, &minor2);
|
||||
if (major > 0)
|
||||
|
|
@ -6069,9 +6265,10 @@ int main() {
|
|||
return 1;
|
||||
if (minor2 < 4)
|
||||
return 1;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
then :
|
||||
|
|
@ -6097,8 +6294,12 @@ else $as_nop
|
|||
#ifdef HAVE_NET_BPF_H
|
||||
#include <net/bpf.h>
|
||||
#endif
|
||||
extern char pcap_version[];
|
||||
int main() {
|
||||
extern char pcap_version;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
int major, minor;
|
||||
sscanf(pcap_version,"%d.%d", &major, &minor);
|
||||
if ((major == 1 && minor >= 1) || major > 1)
|
||||
|
|
@ -6109,9 +6310,10 @@ int main() {
|
|||
return 1;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"
|
||||
then :
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ AC_PREREQ(2.13)
|
|||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(nping.cc)
|
||||
m4_pattern_forbid([^AX_])
|
||||
m4_include([../m4/ax_check_compile_flag.m4])
|
||||
|
||||
m4_include([../acinclude.m4])
|
||||
|
||||
|
|
@ -118,6 +120,30 @@ AC_SEARCH_LIBS(dlopen, dl)
|
|||
# libpcap can require libnl
|
||||
AC_SEARCH_LIBS(nl_handle_alloc, nl)
|
||||
|
||||
AC_ARG_ENABLE([fuzzing],
|
||||
AS_HELP_STRING([--enable-fuzzing],
|
||||
[build fuzz targets]),
|
||||
[],
|
||||
[enable_fuzzing=no])
|
||||
AS_IF([test "x$enable_fuzzing" = "xyes"], [
|
||||
m4_define([FUZZ_FLAGS],
|
||||
[-fsanitize=fuzzer-no-link,address,undefined -fno-omit-frame-pointer])
|
||||
AC_LANG_PUSH([C])
|
||||
AX_CHECK_COMPILE_FLAG([FUZZ_FLAGS],
|
||||
[CFLAGS="$CFLAGS FUZZ_FLAGS"],
|
||||
[AC_MSG_ERROR([$CC does not support fuzzing])])
|
||||
AC_LANG_POP([C])
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
AX_CHECK_COMPILE_FLAG([FUZZ_FLAGS],
|
||||
[CXXFLAGS="$CXXFLAGS FUZZ_FLAGS"],
|
||||
[AC_MSG_ERROR([$CXX does not support fuzzing])])
|
||||
AC_LANG_POP([C++])
|
||||
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
|
||||
AC_DEFINE([ENABLE_FUZZING], [1], [Fuzzing harness enabled])
|
||||
])
|
||||
AC_SUBST([ENABLE_FUZZING], [$enable_fuzzing])
|
||||
|
||||
# We test whether they specified openssl desires explicitly
|
||||
use_openssl="yes"
|
||||
specialssldir=""
|
||||
|
|
|
|||
|
|
@ -152,4 +152,7 @@ extern "C" int gethostname (char *, unsigned int);
|
|||
#undef NETBSD
|
||||
#undef MACOSX
|
||||
|
||||
/* Fuzzing harness enabled */
|
||||
#undef ENABLE_FUZZING
|
||||
|
||||
#endif /* CONFIG_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue