diff --git a/MANIFEST b/MANIFEST index ae56c25b0..a04ca9826 100644 --- a/MANIFEST +++ b/MANIFEST @@ -504,7 +504,6 @@ plugins/sudoers/interfaces.c plugins/sudoers/interfaces.h plugins/sudoers/iolog.c plugins/sudoers/iolog_path_escapes.c -plugins/sudoers/iolog_plugin.h plugins/sudoers/ldap.c plugins/sudoers/ldap_conf.c plugins/sudoers/ldap_util.c @@ -512,6 +511,7 @@ plugins/sudoers/linux_audit.c plugins/sudoers/linux_audit.h plugins/sudoers/locale.c plugins/sudoers/log_client.c +plugins/sudoers/log_client.h plugins/sudoers/logging.c plugins/sudoers/logging.h plugins/sudoers/match.c diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in index b310a72ea..28f4ffc84 100644 --- a/plugins/sudoers/Makefile.in +++ b/plugins/sudoers/Makefile.in @@ -704,11 +704,11 @@ audit.lo: $(srcdir)/audit.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/bsm_audit.h \ - $(srcdir)/defaults.h $(srcdir)/iolog_plugin.h \ - $(srcdir)/linux_audit.h $(srcdir)/logging.h $(srcdir)/parse.h \ - $(srcdir)/solaris_audit.h $(srcdir)/strlist.h $(srcdir)/sudo_nss.h \ - $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ - $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(srcdir)/defaults.h $(srcdir)/linux_audit.h $(srcdir)/log_client.h \ + $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/solaris_audit.h \ + $(srcdir)/strlist.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/audit.c audit.i: $(srcdir)/audit.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ @@ -716,11 +716,11 @@ audit.i: $(srcdir)/audit.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/bsm_audit.h \ - $(srcdir)/defaults.h $(srcdir)/iolog_plugin.h \ - $(srcdir)/linux_audit.h $(srcdir)/logging.h $(srcdir)/parse.h \ - $(srcdir)/solaris_audit.h $(srcdir)/strlist.h $(srcdir)/sudo_nss.h \ - $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ - $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(srcdir)/defaults.h $(srcdir)/linux_audit.h $(srcdir)/log_client.h \ + $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/solaris_audit.h \ + $(srcdir)/strlist.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< audit.plog: audit.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/audit.c --i-file $< --output-file $@ @@ -1596,7 +1596,7 @@ iolog.lo: $(srcdir)/iolog.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ - $(srcdir)/defaults.h $(srcdir)/iolog_plugin.h $(srcdir)/logging.h \ + $(srcdir)/defaults.h $(srcdir)/log_client.h $(srcdir)/logging.h \ $(srcdir)/parse.h $(srcdir)/strlist.h $(srcdir)/sudo_nss.h \ $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ $(top_builddir)/config.h $(top_builddir)/pathnames.h @@ -1607,7 +1607,7 @@ iolog.i: $(srcdir)/iolog.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ - $(srcdir)/defaults.h $(srcdir)/iolog_plugin.h $(srcdir)/logging.h \ + $(srcdir)/defaults.h $(srcdir)/log_client.h $(srcdir)/logging.h \ $(srcdir)/parse.h $(srcdir)/strlist.h $(srcdir)/sudo_nss.h \ $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ $(top_builddir)/config.h $(top_builddir)/pathnames.h @@ -1787,11 +1787,10 @@ log_client.lo: $(srcdir)/log_client.c $(devdir)/def_data.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ - $(srcdir)/defaults.h $(srcdir)/iolog_plugin.h \ - $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/strlist.h \ - $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ - $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(srcdir)/defaults.h $(srcdir)/log_client.h $(srcdir)/logging.h \ + $(srcdir)/parse.h $(srcdir)/strlist.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/log_client.c log_client.i: $(srcdir)/log_client.c $(devdir)/def_data.h \ $(incdir)/compat/getaddrinfo.h $(incdir)/compat/stdbool.h \ @@ -1802,11 +1801,10 @@ log_client.i: $(srcdir)/log_client.c $(devdir)/def_data.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ - $(srcdir)/defaults.h $(srcdir)/iolog_plugin.h \ - $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/strlist.h \ - $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ - $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(srcdir)/defaults.h $(srcdir)/log_client.h $(srcdir)/logging.h \ + $(srcdir)/parse.h $(srcdir)/strlist.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< log_client.plog: log_client.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/log_client.c --i-file $< --output-file $@ diff --git a/plugins/sudoers/audit.c b/plugins/sudoers/audit.c index 5caf885df..223109b96 100644 --- a/plugins/sudoers/audit.c +++ b/plugins/sudoers/audit.c @@ -30,8 +30,7 @@ #include #include "sudoers.h" -#include /* XXX */ -#include "iolog_plugin.h" /* XXX */ +#include "log_client.h" #ifdef HAVE_BSM_AUDIT # include "bsm_audit.h" @@ -45,7 +44,7 @@ #ifdef SUDOERS_LOG_CLIENT static struct client_closure *client_closure = NULL; -static struct iolog_details audit_details; +static struct log_details audit_details; #endif char *audit_msg = NULL; @@ -53,7 +52,7 @@ char *audit_msg = NULL; extern sudo_dso_public struct audit_plugin sudoers_audit; /* XXX */ -int iolog_deserialize_info(struct iolog_details *details, char * const user_info[], char * const command_info[], char * const argv[], char * const user_env[]); +int iolog_deserialize_info(struct log_details *details, char * const user_info[], char * const command_info[], char * const argv[], char * const user_env[]); static int audit_success(char *const argv[]) diff --git a/plugins/sudoers/iolog.c b/plugins/sudoers/iolog.c index 37a3fd08b..4a9ad0f76 100644 --- a/plugins/sudoers/iolog.c +++ b/plugins/sudoers/iolog.c @@ -42,7 +42,7 @@ #include "sudoers.h" #include "sudo_eventlog.h" #include "sudo_iolog.h" -#include "iolog_plugin.h" +#include "log_client.h" static struct iolog_file iolog_files[] = { { false }, /* IOFD_STDIN */ @@ -67,7 +67,7 @@ static struct sudoers_io_operations { #ifdef SUDOERS_LOG_CLIENT static struct client_closure *client_closure; #endif -static struct iolog_details iolog_details; +static struct log_details iolog_details; static bool warned = false; static int iolog_dir_fd = -1; static struct timespec last_time; @@ -249,7 +249,7 @@ bad: * Returns true if I/O logging is enabled, false if not and -1 on error. */ int -iolog_deserialize_info(struct iolog_details *details, char * const user_info[], +iolog_deserialize_info(struct log_details *details, char * const user_info[], char * const command_info[], char * const argv[], char * const user_env[]) { struct eventlog *evlog; @@ -345,7 +345,7 @@ iolog_deserialize_info(struct iolog_details *details, char * const user_info[], case 'i': if (strncmp(*cur, "ignore_iolog_errors=", sizeof("ignore_iolog_errors=") - 1) == 0) { if (sudo_strtobool(*cur + sizeof("ignore_iolog_errors=") - 1) == true) - details->ignore_iolog_errors = true; + details->ignore_log_errors = true; continue; } if (strncmp(*cur, "iolog_path=", sizeof("iolog_path=") - 1) == 0) { @@ -777,7 +777,7 @@ done: } /* Ignore errors if they occur if the policy says so. */ - if (ret == -1 && iolog_details.ignore_iolog_errors) + if (ret == -1 && iolog_details.ignore_log_errors) ret = 0; debug_return_int(ret); @@ -1004,7 +1004,7 @@ bad: } /* Ignore errors if they occur if the policy says so. */ - if (iolog_details.ignore_iolog_errors) + if (iolog_details.ignore_log_errors) ret = 1; } @@ -1132,7 +1132,7 @@ bad: } /* Ignore errors if they occur if the policy says so. */ - if (iolog_details.ignore_iolog_errors) + if (iolog_details.ignore_log_errors) ret = 1; } @@ -1238,7 +1238,7 @@ bad: } /* Ignore errors if they occur if the policy says so. */ - if (iolog_details.ignore_iolog_errors) + if (iolog_details.ignore_log_errors) ret = 1; } diff --git a/plugins/sudoers/log_client.c b/plugins/sudoers/log_client.c index 97e6ae203..40bd6ee6e 100644 --- a/plugins/sudoers/log_client.c +++ b/plugins/sudoers/log_client.c @@ -60,8 +60,8 @@ #include "sudo_event.h" #include "sudo_eventlog.h" #include "sudo_iolog.h" -#include "iolog_plugin.h" #include "hostcheck.h" +#include "log_client.h" /* Server callback may redirect to client callback for TLS. */ static void client_msg_cb(int fd, int what, void *v); @@ -777,7 +777,7 @@ free_info_messages(InfoMessage **info_msgs, size_t n) static InfoMessage ** fmt_info_messages(struct client_closure *closure, size_t *n_info_msgs) { - struct iolog_details *details = closure->log_details; + struct log_details *details = closure->log_details; struct eventlog *evlog = details->evlog; InfoMessage__StringList *runargv = NULL; InfoMessage__StringList *runenv = NULL; @@ -1636,7 +1636,7 @@ server_msg_cb(int fd, int what, void *v) buf->off = 0; debug_return; bad: - if (closure->log_details->ignore_iolog_errors) { + if (closure->log_details->ignore_log_errors) { /* Disable plugin, the command continues. */ closure->disabled = true; closure->read_ev->del(closure->read_ev); @@ -1751,7 +1751,7 @@ client_msg_cb(int fd, int what, void *v) debug_return; bad: - if (closure->log_details->ignore_iolog_errors) { + if (closure->log_details->ignore_log_errors) { /* Disable plugin, the command continues. */ closure->disabled = true; closure->write_ev->del(closure->read_ev); @@ -1767,7 +1767,7 @@ bad: * Allocate and initialize a new client closure */ static struct client_closure * -client_closure_alloc(struct iolog_details *details, struct timespec *now, +client_closure_alloc(struct log_details *details, struct timespec *now, bool log_io, struct sudo_plugin_event * (*event_alloc)(void)) { struct client_closure *closure; @@ -1808,7 +1808,7 @@ oom: } struct client_closure * -log_server_open(struct iolog_details *details, struct timespec *now, +log_server_open(struct log_details *details, struct timespec *now, bool log_io, struct sudo_plugin_event * (*event_alloc)(void)) { struct client_closure *closure; diff --git a/plugins/sudoers/iolog_plugin.h b/plugins/sudoers/log_client.h similarity index 92% rename from plugins/sudoers/iolog_plugin.h rename to plugins/sudoers/log_client.h index 13ff05b29..dfd9d9b9f 100644 --- a/plugins/sudoers/iolog_plugin.h +++ b/plugins/sudoers/log_client.h @@ -19,6 +19,7 @@ #ifndef SUDOERS_LOG_CLIENT_H #define SUDOERS_LOG_CLIENT_H +#include /* for INET6?_ADDRSTRLEN */ #if defined(HAVE_OPENSSL) # include #endif /* HAVE_OPENSSL */ @@ -47,7 +48,7 @@ struct connection_buffer { }; TAILQ_HEAD(connection_buffer_list, connection_buffer); -struct iolog_details { +struct log_details { struct eventlog *evlog; struct sudoers_str_list *log_servers; struct timespec server_timeout; @@ -58,7 +59,7 @@ struct iolog_details { #endif /* HAVE_OPENSSL */ bool keepalive; bool verify_server; - bool ignore_iolog_errors; + bool ignore_log_errors; }; enum client_state { @@ -97,7 +98,7 @@ struct client_closure { struct connection_buffer read_buf; struct sudo_plugin_event *read_ev; struct sudo_plugin_event *write_ev; - struct iolog_details *log_details; + struct log_details *log_details; struct timespec start_time; struct timespec elapsed; struct timespec committed; @@ -105,7 +106,7 @@ struct client_closure { }; /* iolog_client.c */ -struct client_closure *log_server_open(struct iolog_details *details, struct timespec *now, bool log_io, struct sudo_plugin_event * (*event_alloc)(void)); +struct client_closure *log_server_open(struct log_details *details, struct timespec *now, bool log_io, struct sudo_plugin_event * (*event_alloc)(void)); bool log_server_close(struct client_closure *closure, int exit_status, int error); bool fmt_accept_message(struct client_closure *closure); bool fmt_client_message(struct client_closure *closure, ClientMessage *msg);