Add simple regress check to display the network interfaces found.
This commit is contained in:
1
MANIFEST
1
MANIFEST
@@ -1103,6 +1103,7 @@ src/openbsd.c
|
|||||||
src/parse_args.c
|
src/parse_args.c
|
||||||
src/preload.c
|
src/preload.c
|
||||||
src/preserve_fds.c
|
src/preserve_fds.c
|
||||||
|
src/regress/net_ifs/check_net_ifs.c
|
||||||
src/regress/noexec/check_noexec.c
|
src/regress/noexec/check_noexec.c
|
||||||
src/regress/ttyname/check_ttyname.c
|
src/regress/ttyname/check_ttyname.c
|
||||||
src/selinux.c
|
src/selinux.c
|
||||||
|
@@ -113,7 +113,7 @@ INIT_DIR=@INIT_DIR@
|
|||||||
INIT_SCRIPT=@INIT_SCRIPT@
|
INIT_SCRIPT=@INIT_SCRIPT@
|
||||||
RC_LINK=@RC_LINK@
|
RC_LINK=@RC_LINK@
|
||||||
|
|
||||||
TEST_PROGS = check_ttyname @CHECK_NOEXEC@
|
TEST_PROGS = check_net_ifs @CHECK_NOEXEC@ check_ttyname
|
||||||
TEST_LIBS = @LIBS@ $(LT_LIBS)
|
TEST_LIBS = @LIBS@ $(LT_LIBS)
|
||||||
TEST_LDFLAGS = @LDFLAGS@
|
TEST_LDFLAGS = @LDFLAGS@
|
||||||
|
|
||||||
@@ -135,6 +135,8 @@ POBJS = $(IOBJS:.i=.plog)
|
|||||||
|
|
||||||
SESH_OBJS = copy_file.o edit_open.o exec_common.o sesh.o
|
SESH_OBJS = copy_file.o edit_open.o exec_common.o sesh.o
|
||||||
|
|
||||||
|
CHECK_NET_IFS_OBJS = check_net_ifs.o net_ifs.o
|
||||||
|
|
||||||
CHECK_NOEXEC_OBJS = check_noexec.o exec_common.o
|
CHECK_NOEXEC_OBJS = check_noexec.o exec_common.o
|
||||||
|
|
||||||
CHECK_TTYNAME_OBJS = check_ttyname.o ttyname.o
|
CHECK_TTYNAME_OBJS = check_ttyname.o ttyname.o
|
||||||
@@ -186,6 +188,9 @@ sudo_noexec.la: libsudo_noexec.la
|
|||||||
sesh: $(SESH_OBJS) $(LT_LIBS)
|
sesh: $(SESH_OBJS) $(LT_LIBS)
|
||||||
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(SESH_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
|
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(SESH_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
check_net_ifs: $(CHECK_NET_IFS_OBJS) $(top_builddir)/lib/util/libsudo_util.la
|
||||||
|
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_NET_IFS_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LIBS)
|
||||||
|
|
||||||
check_noexec: $(CHECK_NOEXEC_OBJS) $(top_builddir)/lib/util/libsudo_util.la sudo_noexec.la
|
check_noexec: $(CHECK_NOEXEC_OBJS) $(top_builddir)/lib/util/libsudo_util.la sudo_noexec.la
|
||||||
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_NOEXEC_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LIBS)
|
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_NOEXEC_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LIBS)
|
||||||
|
|
||||||
@@ -279,10 +284,11 @@ check: $(TEST_PROGS) check-fuzzer
|
|||||||
unset LANG || LANG=; \
|
unset LANG || LANG=; \
|
||||||
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
|
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
|
||||||
MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
|
MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
|
||||||
./check_ttyname; \
|
./check_net_ifs; \
|
||||||
if test X"@CHECK_NOEXEC@" != X""; then \
|
if test X"@CHECK_NOEXEC@" != X""; then \
|
||||||
./check_noexec .libs/$(noexecfile); \
|
./check_noexec .libs/$(noexecfile); \
|
||||||
fi; \
|
fi; \
|
||||||
|
./check_ttyname; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@@ -310,6 +316,20 @@ sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(incdir)/sudo_compat.h \
|
|||||||
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_noexec.c
|
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_noexec.c
|
||||||
|
|
||||||
# Autogenerated dependencies, do not modify
|
# Autogenerated dependencies, do not modify
|
||||||
|
check_net_ifs.o: $(srcdir)/regress/net_ifs/check_net_ifs.c \
|
||||||
|
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
|
||||||
|
$(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \
|
||||||
|
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
|
||||||
|
$(incdir)/sudo_util.h $(top_builddir)/config.h
|
||||||
|
$(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/net_ifs/check_net_ifs.c
|
||||||
|
check_net_ifs.i: $(srcdir)/regress/net_ifs/check_net_ifs.c \
|
||||||
|
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
|
||||||
|
$(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \
|
||||||
|
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
|
||||||
|
$(incdir)/sudo_util.h $(top_builddir)/config.h
|
||||||
|
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||||
|
check_net_ifs.plog: check_net_ifs.i
|
||||||
|
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/net_ifs/check_net_ifs.c --i-file $< --output-file $@
|
||||||
check_noexec.o: $(srcdir)/regress/noexec/check_noexec.c \
|
check_noexec.o: $(srcdir)/regress/noexec/check_noexec.c \
|
||||||
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
|
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
|
||||||
$(incdir)/sudo_fatal.h $(incdir)/sudo_plugin.h \
|
$(incdir)/sudo_fatal.h $(incdir)/sudo_plugin.h \
|
||||||
|
62
src/regress/net_ifs/check_net_ifs.c
Normal file
62
src/regress/net_ifs/check_net_ifs.c
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: ISC
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include "sudo_compat.h"
|
||||||
|
#include "sudo_fatal.h"
|
||||||
|
#include "sudo_util.h"
|
||||||
|
|
||||||
|
sudo_dso_public int main(int argc, char *argv[]);
|
||||||
|
|
||||||
|
extern int get_net_ifs(char **addrinfo);
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
char *interfaces;
|
||||||
|
int ninterfaces;
|
||||||
|
|
||||||
|
initprogname(argc > 0 ? argv[0] : "check_net_ifs");
|
||||||
|
|
||||||
|
ninterfaces = get_net_ifs(&interfaces);
|
||||||
|
switch (ninterfaces) {
|
||||||
|
case -1:
|
||||||
|
sudo_warn_nodebug("unable to get network interfaces");
|
||||||
|
return 1;
|
||||||
|
case 0:
|
||||||
|
/* no interfaces or STUB_LOAD_INTERFACES defined. */
|
||||||
|
sudo_warnx_nodebug("OK: (0 interfaces)");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sudo_warnx_nodebug("OK: (%d interface%s, %s)", ninterfaces,
|
||||||
|
ninterfaces > 1 ? "s" : "", interfaces);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Reference in New Issue
Block a user