From: Todd C. Miller Date: Mon, 5 Dec 2011 15:43:44 +0000 (-0500) Subject: Add support for setenv entries in login.conf. We can't use LOGIN_SETENV X-Git-Tag: SUDO_1_8_4~114^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f0abb469221ed0d5a8e6656bcf6cf7d55c3441c;p=sudo Add support for setenv entries in login.conf. We can't use LOGIN_SETENV since the plugin sets up the envp the command is executed with. Also regen the Makefile.in files while here. Fixes bug #527 --- diff --git a/MANIFEST b/MANIFEST index e3d6f352a..7f2ff00d7 100644 --- a/MANIFEST +++ b/MANIFEST @@ -179,6 +179,7 @@ plugins/sudoers/linux_audit.c plugins/sudoers/linux_audit.h plugins/sudoers/logging.c plugins/sudoers/logging.h +plugins/sudoers/login_class.c plugins/sudoers/logwrap.c plugins/sudoers/match.c plugins/sudoers/match_addr.c diff --git a/common/Makefile.in b/common/Makefile.in index 13d6d694c..c14932f87 100644 --- a/common/Makefile.in +++ b/common/Makefile.in @@ -102,8 +102,8 @@ atobool.lo: $(srcdir)/atobool.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/sudo_debug.h $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/atobool.c fileops.lo: $(srcdir)/fileops.c $(top_builddir)/config.h \ - $(top_srcdir)/compat/timespec.h $(incdir)/missing.h \ - $(incdir)/fileops.h $(incdir)/sudo_debug.h + $(top_srcdir)/compat/stdbool.h $(top_srcdir)/compat/timespec.h \ + $(incdir)/missing.h $(incdir)/fileops.h $(incdir)/sudo_debug.h $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/fileops.c fmt_string.lo: $(srcdir)/fmt_string.c $(top_builddir)/config.h \ $(incdir)/missing.h $(incdir)/sudo_debug.h @@ -119,9 +119,9 @@ setgroups.lo: $(srcdir)/setgroups.c $(top_builddir)/config.h \ $(incdir)/missing.h $(incdir)/sudo_debug.h $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/setgroups.c sudo_debug.lo: $(srcdir)/sudo_debug.c $(top_builddir)/config.h \ - $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ - $(incdir)/gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h + $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h \ + $(incdir)/alloc.h $(incdir)/error.h $(incdir)/gettext.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(LIBTOOL) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudo_debug.c term.lo: $(srcdir)/term.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/sudo_debug.h diff --git a/configure b/configure index bae370846..91313be88 100755 --- a/configure +++ b/configure @@ -15445,6 +15445,7 @@ _ACEOF SUDOERS_LIBS="${SUDOERS_LIBS} -lutil" ;; esac + SUDOERS_OBJS="${SUDOERS_OBJS} login_class.lo" fi diff --git a/configure.in b/configure.in index 123a2e607..ee4007fd3 100644 --- a/configure.in +++ b/configure.in @@ -1990,6 +1990,7 @@ if test ${with_logincap-'no'} != "no"; then SUDOERS_LIBS="${SUDOERS_LIBS} -lutil" ;; esac + SUDOERS_OBJS="${SUDOERS_OBJS} login_class.lo" ]) fi if test ${with_project-'no'} != "no"; then diff --git a/mkdep.pl b/mkdep.pl index 55006ba99..abf46f519 100755 --- a/mkdep.pl +++ b/mkdep.pl @@ -52,7 +52,7 @@ sub mkdep { $makefile =~ s:\@DEV\@::g; $makefile =~ s:\@COMMON_OBJS\@:aix.lo:; $makefile =~ s:\@SUDO_OBJS\@:preload.o selinux.o sesh.o sudo_noexec.lo:; - $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo plugin_error.lo:; + $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo plugin_error.lo login_class.lo:; # XXX - fill in AUTH_OBJS from contents of the auth dir instead $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:; $makefile =~ s:\@LTLIBOBJS\@:closefrom.lo dlopen.lo fnmatch.lo getcwd.lo getgrouplist.lo getline.lo getprogname.lo glob.lo isblank.lo memrchr.lo mksiglist.lo mktemp.lo nanosleep.lo setenv.lo siglist.lo snprintf.lo strlcat.lo strlcpy.lo strsignal.lo unsetenv.lo utimes.lo globtest.o fnm_test.o:; diff --git a/plugins/sample/Makefile.in b/plugins/sample/Makefile.in index 3ace25459..27dd44f71 100644 --- a/plugins/sample/Makefile.in +++ b/plugins/sample/Makefile.in @@ -121,6 +121,6 @@ cleandir: realclean # Autogenerated dependencies, do not modify sample_plugin.lo: $(srcdir)/sample_plugin.c $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h $(incdir)/sudo_plugin.h \ - $(incdir)/missing.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/sudo_plugin.h $(incdir)/missing.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sample_plugin.c diff --git a/plugins/sample_group/Makefile.in b/plugins/sample_group/Makefile.in index 5c208ea0c..8a11d97fd 100644 --- a/plugins/sample_group/Makefile.in +++ b/plugins/sample_group/Makefile.in @@ -123,5 +123,6 @@ cleandir: realclean getgrent.lo: $(srcdir)/getgrent.c $(top_builddir)/config.h $(incdir)/missing.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/getgrent.c sample_group.lo: $(srcdir)/sample_group.c $(top_builddir)/config.h \ - $(incdir)/sudo_plugin.h $(incdir)/missing.h + $(top_srcdir)/compat/stdbool.h $(incdir)/sudo_plugin.h \ + $(incdir)/missing.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sample_group.c diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in index 7b9ab7ad4..b2e18527f 100644 --- a/plugins/sudoers/Makefile.in +++ b/plugins/sudoers/Makefile.in @@ -363,26 +363,27 @@ cleandir: realclean # Autogenerated dependencies, do not modify afs.lo: $(authdir)/afs.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/afs.c aix_auth.lo: $(authdir)/aix_auth.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ + $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ + $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ + $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/aix_auth.c alias.lo: $(srcdir)/alias.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/parse.h $(srcdir)/redblack.h \ - $(devdir)/gram.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(srcdir)/parse.h $(srcdir)/redblack.h $(devdir)/gram.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/alias.c audit.lo: $(srcdir)/audit.c $(top_builddir)/config.h $(incdir)/missing.h \ $(srcdir)/logging.h $(incdir)/sudo_debug.h $(srcdir)/bsm_audit.h \ @@ -392,161 +393,169 @@ boottime.lo: $(srcdir)/boottime.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/sudo_debug.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/boottime.c bsdauth.lo: $(authdir)/bsdauth.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/bsdauth.c bsm_audit.lo: $(srcdir)/bsm_audit.c $(top_builddir)/config.h \ $(srcdir)/bsm_audit.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/bsm_audit.c check.lo: $(srcdir)/check.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/check.c check_addr.o: $(srcdir)/regress/parser/check_addr.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/parse.h $(srcdir)/interfaces.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/parse.h \ + $(srcdir)/interfaces.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/regress/parser/check_addr.c check_fill.o: $(srcdir)/regress/parser/check_fill.c $(top_builddir)/config.h \ - $(incdir)/list.h $(srcdir)/parse.h $(srcdir)/toke.h \ + $(top_srcdir)/compat/stdbool.h $(incdir)/list.h \ + $(srcdir)/parse.h $(srcdir)/toke.h $(incdir)/sudo_plugin.h \ $(devdir)/gram.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/regress/parser/check_fill.c check_iolog_path.o: $(srcdir)/regress/iolog_path/check_iolog_path.c \ $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h \ - $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ - $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ $(devdir)/def_data.h $(srcdir)/logging.h \ $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_debug.h $(incdir)/gettext.h \ $(devdir)/def_data.c $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/regress/iolog_path/check_iolog_path.c check_wrap.o: $(srcdir)/regress/logging/check_wrap.c $(top_builddir)/config.h \ - $(incdir)/missing.h $(incdir)/error.h + $(incdir)/missing.h $(incdir)/error.h $(incdir)/sudo_plugin.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/regress/logging/check_wrap.c dce.lo: $(authdir)/dce.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/dce.c defaults.lo: $(srcdir)/defaults.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/parse.h \ - $(devdir)/gram.h $(devdir)/def_data.c + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(srcdir)/parse.h $(devdir)/gram.h \ + $(devdir)/def_data.c $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/defaults.c env.lo: $(srcdir)/env.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/env.c error.o: $(top_srcdir)/src/error.c $(top_builddir)/config.h \ $(incdir)/missing.h $(incdir)/error.h $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(top_srcdir)/src/error.c find_path.lo: $(srcdir)/find_path.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/find_path.c find_path.o: find_path.lo fwtk.lo: $(authdir)/fwtk.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/fwtk.c getdate.o: $(devdir)/getdate.c $(top_builddir)/config.h \ $(top_builddir)/config.h $(incdir)/missing.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(devdir)/getdate.c getspwuid.lo: $(srcdir)/getspwuid.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/getspwuid.c goodpath.lo: $(srcdir)/goodpath.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/goodpath.c goodpath.o: goodpath.lo gram.lo: $(devdir)/gram.c $(top_builddir)/config.h $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h $(incdir)/missing.h \ - $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ - $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ - $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/parse.h \ - $(srcdir)/toke.h $(devdir)/gram.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ + $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ + $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ + $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(srcdir)/parse.h $(srcdir)/toke.h $(devdir)/gram.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(devdir)/gram.c group_plugin.lo: $(srcdir)/group_plugin.c $(top_builddir)/config.h \ $(top_srcdir)/compat/dlfcn.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h \ - $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ - $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ - $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/group_plugin.c group_plugin.o: group_plugin.lo interfaces.lo: $(srcdir)/interfaces.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(srcdir)/interfaces.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/interfaces.c interfaces.o: interfaces.lo iolog.lo: $(srcdir)/iolog.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/iolog.c iolog_path.lo: $(srcdir)/iolog_path.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/iolog_path.c iolog_path.o: iolog_path.lo kerb5.lo: $(authdir)/kerb5.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/kerb5.c ldap.lo: $(srcdir)/ldap.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/parse.h $(incdir)/lbuf.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(srcdir)/parse.h $(incdir)/lbuf.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/ldap.c linux_audit.lo: $(srcdir)/linux_audit.c $(top_builddir)/config.h \ $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ @@ -554,33 +563,44 @@ linux_audit.lo: $(srcdir)/linux_audit.c $(top_builddir)/config.h \ $(srcdir)/linux_audit.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/linux_audit.c logging.lo: $(srcdir)/logging.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/logging.c +login_class.lo: $(srcdir)/login_class.c $(top_builddir)/config.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h + $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/login_class.c logwrap.lo: $(srcdir)/logwrap.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/logwrap.c logwrap.o: logwrap.lo match.lo: $(srcdir)/match.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/parse.h $(devdir)/gram.h \ - $(top_srcdir)/compat/fnmatch.h $(top_srcdir)/compat/glob.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(srcdir)/parse.h $(devdir)/gram.h $(top_srcdir)/compat/fnmatch.h \ + $(top_srcdir)/compat/glob.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/match.c match_addr.lo: $(srcdir)/match_addr.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(srcdir)/interfaces.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/match_addr.c @@ -590,37 +610,38 @@ net_ifs.o: $(top_srcdir)/src/net_ifs.c $(top_builddir)/config.h \ $(incdir)/sudo_debug.h $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(top_srcdir)/src/net_ifs.c pam.lo: $(authdir)/pam.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/pam.c parse.lo: $(srcdir)/parse.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/parse.h $(incdir)/lbuf.h \ - $(devdir)/gram.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(srcdir)/parse.h $(incdir)/lbuf.h $(devdir)/gram.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/parse.c passwd.lo: $(authdir)/passwd.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/passwd.c plugin_error.lo: $(srcdir)/plugin_error.c $(top_builddir)/config.h \ $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ $(incdir)/sudo_plugin.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/plugin_error.c pwutil.lo: $(srcdir)/pwutil.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/redblack.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(srcdir)/redblack.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/pwutil.c pwutil.o: pwutil.lo redblack.lo: $(srcdir)/redblack.c $(top_builddir)/config.h $(incdir)/missing.h \ @@ -628,59 +649,65 @@ redblack.lo: $(srcdir)/redblack.c $(top_builddir)/config.h $(incdir)/missing.h \ $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/redblack.c redblack.o: redblack.lo rfc1938.lo: $(authdir)/rfc1938.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/rfc1938.c secureware.lo: $(authdir)/secureware.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/secureware.c securid5.lo: $(authdir)/securid5.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ + $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ + $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ + $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/securid5.c set_perms.lo: $(srcdir)/set_perms.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/set_perms.c sia.lo: $(authdir)/sia.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/sia.c sudo_auth.lo: $(authdir)/sudo_auth.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/insults.h $(srcdir)/ins_2001.h \ - $(srcdir)/ins_goons.h $(srcdir)/ins_classic.h \ - $(srcdir)/ins_csops.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/insults.h \ + $(srcdir)/ins_2001.h $(srcdir)/ins_goons.h \ + $(srcdir)/ins_classic.h $(srcdir)/ins_csops.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(authdir)/sudo_auth.c sudo_nss.lo: $(srcdir)/sudo_nss.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(incdir)/lbuf.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(incdir)/lbuf.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudo_nss.c -sudoers.lo: $(srcdir)/sudoers.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ +sudoers.lo: $(srcdir)/sudoers.c $(top_builddir)/config.h \ + $(top_srcdir)/compat/getaddrinfo.h $(top_builddir)/config.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ @@ -695,10 +722,11 @@ sudoreplay.o: $(srcdir)/sudoreplay.c $(top_builddir)/config.h \ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudoreplay.c testsudoers.o: $(srcdir)/testsudoers.c $(top_builddir)/config.h \ $(srcdir)/tsgetgrpw.h $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(srcdir)/interfaces.h $(srcdir)/parse.h \ $(devdir)/gram.h $(top_srcdir)/compat/fnmatch.h @@ -706,37 +734,39 @@ testsudoers.o: $(srcdir)/testsudoers.c $(top_builddir)/config.h \ timestr.lo: $(srcdir)/timestr.c $(top_builddir)/config.h $(incdir)/missing.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/timestr.c toke.lo: $(devdir)/toke.c $(top_builddir)/config.h $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h $(incdir)/missing.h \ - $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ - $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ - $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/parse.h \ - $(srcdir)/toke.h $(devdir)/gram.h $(incdir)/lbuf.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ + $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ + $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ + $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(srcdir)/parse.h $(srcdir)/toke.h \ + $(devdir)/gram.h $(incdir)/lbuf.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(devdir)/toke.c toke_util.lo: $(srcdir)/toke_util.c $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/parse.h $(srcdir)/toke.h \ - $(devdir)/gram.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(incdir)/error.h $(incdir)/alloc.h $(incdir)/list.h \ + $(incdir)/fileops.h $(srcdir)/defaults.h $(devdir)/def_data.h \ + $(srcdir)/logging.h $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/parse.h \ + $(srcdir)/toke.h $(devdir)/gram.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/toke_util.c toke_util.o: toke_util.lo tsgetgrpw.o: $(srcdir)/tsgetgrpw.c $(top_builddir)/config.h \ $(srcdir)/tsgetgrpw.h $(top_builddir)/config.h \ - $(srcdir)/sudoers.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ - $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ - $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(srcdir)/sudoers.h $(top_srcdir)/compat/stdbool.h \ + $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ + $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ + $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ + $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_debug.h $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/tsgetgrpw.c visudo.o: $(srcdir)/visudo.c $(top_builddir)/config.h $(srcdir)/sudoers.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/error.h \ - $(incdir)/alloc.h $(incdir)/list.h $(incdir)/fileops.h \ - $(srcdir)/defaults.h $(devdir)/def_data.h $(srcdir)/logging.h \ - $(srcdir)/sudo_nss.h $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(srcdir)/interfaces.h $(srcdir)/parse.h \ - $(srcdir)/redblack.h $(incdir)/gettext.h $(srcdir)/sudoers_version.h \ - $(devdir)/gram.h + $(top_srcdir)/compat/stdbool.h $(top_builddir)/pathnames.h \ + $(incdir)/missing.h $(incdir)/error.h $(incdir)/alloc.h \ + $(incdir)/list.h $(incdir)/fileops.h $(srcdir)/defaults.h \ + $(devdir)/def_data.h $(srcdir)/logging.h $(srcdir)/sudo_nss.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(srcdir)/interfaces.h $(srcdir)/parse.h $(srcdir)/redblack.h \ + $(incdir)/gettext.h $(srcdir)/sudoers_version.h $(devdir)/gram.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/visudo.c diff --git a/plugins/sudoers/env.c b/plugins/sudoers/env.c index 725212036..66bcd5e48 100644 --- a/plugins/sudoers/env.c +++ b/plugins/sudoers/env.c @@ -98,7 +98,6 @@ struct environment { /* * Prototypes */ -static void sudo_setenv(const char *, const char *, int); static void sudo_putenv(char *, int, int); /* @@ -240,7 +239,7 @@ env_get(void) * (not environ) and it always overwrites. The dupcheck param determines * whether we need to verify that the variable is not already set. */ -static void +void sudo_setenv(const char *var, const char *val, int dupcheck) { char *estring; diff --git a/plugins/sudoers/login_class.c b/plugins/sudoers/login_class.c new file mode 100644 index 000000000..34270d521 --- /dev/null +++ b/plugins/sudoers/login_class.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2004, 2011 Todd C. Miller + * + * 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 + +#include +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif /* STDC_HEADERS */ +#ifdef HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#ifdef HAVE_STRINGS_H +# include +#endif /* HAVE_STRING_H */ +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#include + +#include + +#include "sudoers.h" + +/* + * Check whether or not a tilde in a string should be expanded. + * We only do expansion for things like "~", "~/...", ~me", "~me/...". + */ +#define tilde_valid(s, u, l) \ + ((s)[1] == '/' || (s)[1] == '\0' || \ + (strncmp((s)+1, u, l) == 0 && ((s)[l+1] == '/' || (s)[l+1] == '\0'))) + +/* + * Make a copy of a string, expanding '~' to the user's homedir, '$' to the + * login name and other escape sequences as per cgetstr(3). + */ +static char * +expandstr(const char *ostr, const struct passwd *pwd) +{ + size_t n, olen, nlen, ulen, dlen; + const char *ep, *eo, *op; + char *nstr, *np; + int ch; + + /* calculate the size of the new string */ + ulen = strlen(pwd->pw_name); + dlen = strlen(pwd->pw_dir); + olen = nlen = strlen(ostr); + for (op = ostr, ep = ostr + olen; op < ep; op++) { + switch (*op) { + case '~': + if (!tilde_valid(op, pwd->pw_name, ulen)) + break; + if (op[1] != '/' && op[1] != '\0') { + op += ulen; /* ~username */ + nlen = nlen - ulen - 1 + dlen; + } else + nlen += dlen - 1; + break; + case '$': + nlen += ulen - 1; + break; + case '^': + /* control char */ + if (*++op != '\0') + nlen--; + break; + case '\\': + if (op[1] == '\0') + break; + /* + * Byte in octal notation (\123) or an escaped char (\t) + */ + eo = op + 4; + do { + op++; + nlen--; + } while (op < eo && *op >= '0' && *op <= '7'); + break; + } + } + np = nstr = emalloc(++nlen); + + for (op = ostr, ep = ostr + olen; op < ep; op++) { + switch ((ch = *op)) { + case '~': + if (!tilde_valid(op, pwd->pw_name, ulen)) + break; + if (op[1] != '/' && op[1] != '\0') + op += ulen; /* ~username */ + strlcpy(np, pwd->pw_dir, nlen); + nlen -= dlen; + np += dlen; + continue; + case '$': + strlcpy(np, pwd->pw_name, nlen); + nlen -= ulen; + np += ulen; + continue; + case '^': + if (op[1] != '\0') + ch = *++op & 037; + break; + case '\\': + if (op[1] == '\0') + break; + switch(*++op) { + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + /* byte in octal up to 3 digits long */ + ch = 0; + n = 3; + do { + ch = ch * 8 + (*op++ - '0'); + } while (--n && *op >= '0' && *op <= '7'); + break; + case 'b': case 'B': + ch = '\b'; + break; + case 't': case 'T': + ch = '\t'; + break; + case 'n': case 'N': + ch = '\n'; + break; + case 'f': case 'F': + ch = '\f'; + break; + case 'r': case 'R': + ch = '\r'; + break; + case 'e': case 'E': + ch = '\033'; + break; + case 'c': case 'C': + ch = ':'; + break; + default: + ch = *op; + break; + } + break; + } + *np++ = ch; + nlen--; + } + *np = '\0'; + return (nstr); +} + +/* + * Set an environment variable, substituting for ~ and $ + */ +static void +login_setenv(char *name, char *ovalue, const struct passwd *pwd) +{ + char *value = NULL; + + if (*ovalue != '\0') + value = expandstr(ovalue, pwd); + sudo_setenv(name, value ? value : ovalue, 1); + efree(value); +} + +/* + * Look up "setenv" for this user in login.conf and set the comma-separated + * list of environment variables, expanding '~' and '$'. + */ +int +sudo_login_setenv(login_cap_t *lc, const struct passwd *pwd) +{ + char *beg, *end, *ep, *list, *value; + int len; + + if (lc == NULL || lc->lc_cap == NULL) + return (-1); /* impossible */ + + if ((len = cgetustr(lc->lc_cap, "setenv", &list)) <= 0) + return (0); + + for (beg = end = list, ep = list + len + 1; end < ep; end++) { + switch (*end) { + case '\\': + if (*(end + 1) == ',') + end++; /* skip escaped comma */ + continue; + case ',': + case '\0': + *end = '\0'; + if (beg == end) { + beg++; + continue; + } + break; + default: + continue; + } + + if ((value = strchr(beg, '=')) != NULL) + *value++ = '\0'; + else + value = ""; + login_setenv(beg, value, pwd); + beg = end + 1; + } + efree(list); + return (0); +} diff --git a/plugins/sudoers/sudoers.c b/plugins/sudoers/sudoers.c index 3dd6b856b..6d64ac613 100644 --- a/plugins/sudoers/sudoers.c +++ b/plugins/sudoers/sudoers.c @@ -127,6 +127,9 @@ static char *runas_group; static struct sudo_nss_list *snl; static const char *interfaces_string; static sigaction_t saved_sa_int, saved_sa_quit, saved_sa_tstp; +#ifdef HAVE_LOGIN_CAP_H +static login_cap_t *lc; +#endif /* XXX - must be extern for audit bits of sudo_auth.c */ int NewArgc; @@ -592,8 +595,16 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], #if defined(__linux__) || defined(_AIX) /* Insert system-wide environment variables. */ read_env_file(_PATH_ENVIRONMENT, true); +#elif defined(HAVE_LOGIN_CAP_H) + /* Insert login class-specific environment variables. */ + if (lc != NULL) + sudo_login_setenv(lc, runas_pw); #endif } +#ifdef HAVE_LOGIN_CAP_H + login_close(lc); + lc = NULL; +#endif /* Insert system-wide environment variables. */ if (def_env_file) @@ -1004,7 +1015,6 @@ static void set_loginclass(struct passwd *pw) { int errflags; - login_cap_t *lc; debug_decl(set_loginclass, SUDO_DEBUG_PLUGIN) if (!def_use_loginclass) @@ -1037,7 +1047,6 @@ set_loginclass(struct passwd *pw) log_error(errflags, _("unknown login class: %s"), login_class); def_use_loginclass = false; } - login_close(lc); debug_return; } #else diff --git a/plugins/sudoers/sudoers.h b/plugins/sudoers/sudoers.h index 1d4f3e9d4..6c7878b28 100644 --- a/plugins/sudoers/sudoers.h +++ b/plugins/sudoers/sudoers.h @@ -197,6 +197,7 @@ struct lbuf; struct passwd; struct stat; struct timeval; +struct login_cap; /* * Function prototypes @@ -305,6 +306,7 @@ void init_envtables(void); void insert_env_vars(char * const envp[]); void read_env_file(const char *, int); void rebuild_env(void); +void sudo_setenv(const char *var, const char *val, int dupcheck); void validate_env_vars(char * const envp[]); /* fmt_string.c */ @@ -328,6 +330,9 @@ int group_plugin_query(const char *user, const char *group, /* setgroups.c */ int sudo_setgroups(int ngids, const GETGROUPS_T *gids); +/* login_cap.c */ +int sudo_login_setenv(struct login_cap *lc, const struct passwd *pwd); + #ifndef _SUDO_MAIN extern struct sudo_user sudo_user; extern struct passwd *list_pw; diff --git a/src/Makefile.in b/src/Makefile.in index f3b5f4200..51b725b65 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -153,45 +153,49 @@ cleandir: realclean # Autogenerated dependencies, do not modify conversation.o: $(srcdir)/conversation.c $(top_builddir)/config.h \ $(srcdir)/sudo.h $(top_builddir)/pathnames.h \ - $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ - $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ - $(incdir)/gettext.h $(incdir)/sudo_plugin.h \ - $(srcdir)/sudo_plugin_int.h + $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h \ + $(incdir)/alloc.h $(incdir)/error.h $(incdir)/fileops.h \ + $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ + $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/conversation.c error.o: $(srcdir)/error.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/error.h $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/error.c exec.o: $(srcdir)/exec.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/sudo_exec.h \ - $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(srcdir)/sudo_exec.h $(incdir)/sudo_plugin.h \ + $(srcdir)/sudo_plugin_int.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/exec.c exec_pty.o: $(srcdir)/exec_pty.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/sudo_exec.h \ - $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(srcdir)/sudo_exec.h $(incdir)/sudo_plugin.h \ + $(srcdir)/sudo_plugin_int.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/exec_pty.c get_pty.o: $(srcdir)/get_pty.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/get_pty.c load_plugins.o: $(srcdir)/load_plugins.c $(top_builddir)/config.h \ $(top_srcdir)/compat/dlfcn.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h \ - $(incdir)/alloc.h $(incdir)/error.h $(incdir)/fileops.h \ - $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ - $(incdir)/sudo_plugin.h $(srcdir)/sudo_plugin_int.h \ - $(incdir)/sudo_debug.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(incdir)/sudo_plugin.h \ + $(srcdir)/sudo_plugin_int.h $(incdir)/sudo_debug.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/load_plugins.c net_ifs.o: $(srcdir)/net_ifs.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/alloc.h $(incdir)/error.h $(incdir)/sudo_debug.h \ $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/net_ifs.c parse_args.o: $(srcdir)/parse_args.c $(top_builddir)/config.h ./sudo_usage.h \ - $(srcdir)/sudo.h $(top_builddir)/pathnames.h $(incdir)/missing.h \ + $(srcdir)/sudo.h $(top_builddir)/pathnames.h \ + $(top_srcdir)/compat/stdbool.h $(incdir)/missing.h \ $(incdir)/alloc.h $(incdir)/error.h $(incdir)/fileops.h \ $(incdir)/list.h $(incdir)/sudo_debug.h $(incdir)/gettext.h \ $(incdir)/lbuf.h @@ -199,37 +203,42 @@ parse_args.o: $(srcdir)/parse_args.c $(top_builddir)/config.h ./sudo_usage.h \ preload.o: $(srcdir)/preload.c $(top_builddir)/config.h $(incdir)/sudo_plugin.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/preload.c selinux.o: $(srcdir)/selinux.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/selinux.c sesh.o: $(srcdir)/sesh.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sesh.c sudo.o: $(srcdir)/sudo.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(incdir)/sudo_plugin.h \ + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(incdir)/sudo_plugin.h \ $(srcdir)/sudo_plugin_int.h ./sudo_usage.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudo.c sudo_edit.o: $(srcdir)/sudo_edit.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudo_edit.c sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(top_builddir)/config.h \ $(incdir)/missing.h $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/sudo_noexec.c tgetpass.o: $(srcdir)/tgetpass.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/tgetpass.c ttysize.o: $(srcdir)/ttysize.c $(top_builddir)/config.h $(incdir)/missing.h \ $(incdir)/sudo_debug.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/ttysize.c utmp.o: $(srcdir)/utmp.c $(top_builddir)/config.h $(srcdir)/sudo.h \ - $(top_builddir)/pathnames.h $(incdir)/missing.h $(incdir)/alloc.h \ - $(incdir)/error.h $(incdir)/fileops.h $(incdir)/list.h \ - $(incdir)/sudo_debug.h $(incdir)/gettext.h $(srcdir)/sudo_exec.h + $(top_builddir)/pathnames.h $(top_srcdir)/compat/stdbool.h \ + $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h \ + $(incdir)/fileops.h $(incdir)/list.h $(incdir)/sudo_debug.h \ + $(incdir)/gettext.h $(srcdir)/sudo_exec.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/utmp.c