Tony Asleson
2014-12-19 23:35:23 UTC
- Renamed loud() to log_and_exit()
- Changes the logger function to use severity in syslog
call
Signed-off-by: Tony Asleson <***@redhat.com>
---
daemon/lsm_daemon.c | 61 ++++++++++++++++++++++++++++-------------------------
1 file changed, 32 insertions(+), 29 deletions(-)
diff --git a/daemon/lsm_daemon.c b/daemon/lsm_daemon.c
index eb44d3f..8aba12b 100644
--- a/daemon/lsm_daemon.c
+++ b/daemon/lsm_daemon.c
@@ -97,15 +97,18 @@ void logger(int severity, const char *fmt, ...)
{
char buf[2048];
- if( (LOG_INFO == severity && verbose_flag) || LOG_ERR == LOG_WARNING
- || LOG_ERR == severity) {
+ if( verbose_flag || LOG_WARNING == severity || LOG_ERR == severity) {
va_list arg;
va_start(arg, fmt);
vsnprintf(buf, sizeof(buf), fmt, arg);
va_end(arg);
if( !systemd ) {
- syslog(LOG_ERR, "%s", buf);
+ if( verbose_flag ) {
+ syslog(LOG_ERR, "%s", buf);
+ } else {
+ syslog(severity, "%s", buf);
+ }
} else {
fprintf(stdout, "%s", buf);
fflush(stdout);
@@ -116,7 +119,7 @@ void logger(int severity, const char *fmt, ...)
}
}
}
-#define loud(fmt, ...) logger(LOG_ERR, fmt, ##__VA_ARGS__)
+#define log_and_exit(fmt, ...) logger(LOG_ERR, fmt, ##__VA_ARGS__)
#define warn(fmt, ...) logger(LOG_WARNING, fmt, ##__VA_ARGS__)
#define info(fmt, ...) logger(LOG_INFO, fmt, ##__VA_ARGS__)
@@ -153,17 +156,17 @@ void change_privs(uid_t u, gid_t g)
if( -1 == setgid(g) ) {
err = errno;
- loud("Unexpected error on setgid(errno %d)\n", err);
+ log_and_exit("Unexpected error on setgid(errno %d)\n", err);
}
if( -1 == setgroups(1, &g) ) {
err = errno;
- loud("Unexpected error on setgroups(errno %d)\n", err);
+ log_and_exit("Unexpected error on setgroups(errno %d)\n", err);
}
if( -1 == setuid(u) ) {
err = errno;
- loud("Unexpected error on setuid(errno %d)\n", err);
+ log_and_exit("Unexpected error on setuid(errno %d)\n", err);
}
}
@@ -181,8 +184,7 @@ void set_privs_to_lsm_user(uid_t client_uid, gid_t client_gid)
if( pw ) {
change_privs(pw->pw_uid, pw->pw_gid);
} else {
- info("Warn: Missing %s user, running as existing user!\n",
- LSM_USER);
+ warn("Missing %s user, running as existing user!\n", LSM_USER);
change_privs(client_uid, client_gid);
}
}
@@ -210,14 +212,14 @@ void flight_check(void)
int err = 0;
if( -1 == access(socket_dir, R_OK|W_OK )) {
err = errno;
- loud("Unable to access socket directory %s, errno= %d\n",
- socket_dir, err);
+ log_and_exit("Unable to access socket directory %s, errno= %d\n",
+ socket_dir, err);
}
if( -1 == access(plugin_dir, R_OK|X_OK)) {
err = errno;
- loud("Unable to access plug-in directory %s, errno= %d\n",
- plugin_dir, err);
+ log_and_exit("Unable to access plug-in directory %s, errno= %d\n",
+ plugin_dir, err);
}
}
@@ -249,7 +251,7 @@ char *path_form(const char* path, const char *name)
if( full ) {
snprintf(full, s, "%s/%s", path, name);
} else {
- loud("malloc failure while trying to allocate %d bytes\n", s);
+ log_and_exit("malloc failure while trying to allocate %d bytes\n", s);
}
return full;
}
@@ -301,12 +303,13 @@ void process_directory( char *dir, void *p, file_op call_back)
if( closedir(dp) ) {
err = errno;
- loud("Error on closing dir %s: %s\n", dir, strerror(err));
+ log_and_exit("Error on closing dir %s: %s\n", dir,
+ strerror(err));
}
} else {
err = errno;
- loud("Error on processing directory %s: %s\n", dir,
- strerror(err));
+ log_and_exit("Error on processing directory %s: %s\n", dir,
+ strerror(err));
}
}
}
@@ -328,7 +331,7 @@ int delete_socket(void *p, char *full_name)
if( S_ISSOCK(statbuf.st_mode)) {
if( unlink(full_name) ) {
err = errno;
- loud("Error on unlinking file %s: %s\n",
+ log_and_exit("Error on unlinking file %s: %s\n",
full_name, strerror(err));
}
}
@@ -375,23 +378,23 @@ int setup_socket(char *full_name)
if( -1 == bind(fd, (struct sockaddr *)&addr, sizeof(struct sockaddr_un))) {
err = errno;
- loud("Error on binding socket %s: %s\n", socket_file, strerror(err));
+ log_and_exit("Error on binding socket %s: %s\n", socket_file, strerror(err));
}
if( -1 == chmod(socket_file, S_IREAD|S_IWRITE|S_IRGRP|S_IWGRP
|S_IROTH|S_IWOTH)) {
err = errno;
- loud("Error on chmod socket file %s: %s\n", socket_file, strerror(err));
+ log_and_exit("Error on chmod socket file %s: %s\n", socket_file, strerror(err));
}
if( -1 == listen(fd, 5)) {
err = errno;
- loud("Error on listening %s: %s\n", socket_file, strerror(err));
+ log_and_exit("Error on listening %s: %s\n", socket_file, strerror(err));
}
} else {
err = errno;
- loud("Error on socket create %s: %s\n",
+ log_and_exit("Error on socket create %s: %s\n",
socket_file, strerror(err));
}
@@ -453,10 +456,10 @@ int process_plugin(void *p, char *full_name)
setup_socket will exit on error. */
free(item);
item = NULL;
- loud("strdup failed %s\n", full_name);
+ log_and_exit("strdup failed %s\n", full_name);
}
} else {
- loud("Memory allocation failure!\n");
+ log_and_exit("Memory allocation failure!\n");
}
}
}
@@ -480,7 +483,7 @@ void child_cleanup(void)
if( -1 == rc ) {
err = errno;
- warn("Error: waitid %d - %s\n", err, strerror(err));
+ info("waitid %d - %s\n", err, strerror(err));
break;
} else {
if( 0 == rc && si.si_pid == 0 ) {
@@ -611,7 +614,7 @@ void exec_plugin( char *plugin, int client_fd )
if( -1 == exec_rc ) {
int err = errno;
- loud("Error on exec'ing Plugin %s: %s\n",
+ log_and_exit("Error on exec'ing Plugin %s: %s\n",
p_copy, strerror(err));
}
}
@@ -643,7 +646,7 @@ void _serving(void)
}
if( !nfds ) {
- loud("No plugins found in directory %s\n", plugin_dir);
+ log_and_exit("No plugins found in directory %s\n", plugin_dir);
}
nfds += 1;
@@ -654,7 +657,7 @@ void _serving(void)
return;
} else {
err = errno;
- loud("Error on selecting Plugin: %s", strerror(err));
+ log_and_exit("Error on selecting Plugin: %s", strerror(err));
}
} else if( ready > 0 ) {
int fd = 0;
@@ -778,7 +781,7 @@ int main(int argc, char *argv[])
if( !systemd ) {
if ( -1 == daemon(0, 0) ) {
int err = errno;
- loud("Error on calling daemon: %s\n", strerror(err));
+ log_and_exit("Error on calling daemon: %s\n", strerror(err));
}
}
- Changes the logger function to use severity in syslog
call
Signed-off-by: Tony Asleson <***@redhat.com>
---
daemon/lsm_daemon.c | 61 ++++++++++++++++++++++++++++-------------------------
1 file changed, 32 insertions(+), 29 deletions(-)
diff --git a/daemon/lsm_daemon.c b/daemon/lsm_daemon.c
index eb44d3f..8aba12b 100644
--- a/daemon/lsm_daemon.c
+++ b/daemon/lsm_daemon.c
@@ -97,15 +97,18 @@ void logger(int severity, const char *fmt, ...)
{
char buf[2048];
- if( (LOG_INFO == severity && verbose_flag) || LOG_ERR == LOG_WARNING
- || LOG_ERR == severity) {
+ if( verbose_flag || LOG_WARNING == severity || LOG_ERR == severity) {
va_list arg;
va_start(arg, fmt);
vsnprintf(buf, sizeof(buf), fmt, arg);
va_end(arg);
if( !systemd ) {
- syslog(LOG_ERR, "%s", buf);
+ if( verbose_flag ) {
+ syslog(LOG_ERR, "%s", buf);
+ } else {
+ syslog(severity, "%s", buf);
+ }
} else {
fprintf(stdout, "%s", buf);
fflush(stdout);
@@ -116,7 +119,7 @@ void logger(int severity, const char *fmt, ...)
}
}
}
-#define loud(fmt, ...) logger(LOG_ERR, fmt, ##__VA_ARGS__)
+#define log_and_exit(fmt, ...) logger(LOG_ERR, fmt, ##__VA_ARGS__)
#define warn(fmt, ...) logger(LOG_WARNING, fmt, ##__VA_ARGS__)
#define info(fmt, ...) logger(LOG_INFO, fmt, ##__VA_ARGS__)
@@ -153,17 +156,17 @@ void change_privs(uid_t u, gid_t g)
if( -1 == setgid(g) ) {
err = errno;
- loud("Unexpected error on setgid(errno %d)\n", err);
+ log_and_exit("Unexpected error on setgid(errno %d)\n", err);
}
if( -1 == setgroups(1, &g) ) {
err = errno;
- loud("Unexpected error on setgroups(errno %d)\n", err);
+ log_and_exit("Unexpected error on setgroups(errno %d)\n", err);
}
if( -1 == setuid(u) ) {
err = errno;
- loud("Unexpected error on setuid(errno %d)\n", err);
+ log_and_exit("Unexpected error on setuid(errno %d)\n", err);
}
}
@@ -181,8 +184,7 @@ void set_privs_to_lsm_user(uid_t client_uid, gid_t client_gid)
if( pw ) {
change_privs(pw->pw_uid, pw->pw_gid);
} else {
- info("Warn: Missing %s user, running as existing user!\n",
- LSM_USER);
+ warn("Missing %s user, running as existing user!\n", LSM_USER);
change_privs(client_uid, client_gid);
}
}
@@ -210,14 +212,14 @@ void flight_check(void)
int err = 0;
if( -1 == access(socket_dir, R_OK|W_OK )) {
err = errno;
- loud("Unable to access socket directory %s, errno= %d\n",
- socket_dir, err);
+ log_and_exit("Unable to access socket directory %s, errno= %d\n",
+ socket_dir, err);
}
if( -1 == access(plugin_dir, R_OK|X_OK)) {
err = errno;
- loud("Unable to access plug-in directory %s, errno= %d\n",
- plugin_dir, err);
+ log_and_exit("Unable to access plug-in directory %s, errno= %d\n",
+ plugin_dir, err);
}
}
@@ -249,7 +251,7 @@ char *path_form(const char* path, const char *name)
if( full ) {
snprintf(full, s, "%s/%s", path, name);
} else {
- loud("malloc failure while trying to allocate %d bytes\n", s);
+ log_and_exit("malloc failure while trying to allocate %d bytes\n", s);
}
return full;
}
@@ -301,12 +303,13 @@ void process_directory( char *dir, void *p, file_op call_back)
if( closedir(dp) ) {
err = errno;
- loud("Error on closing dir %s: %s\n", dir, strerror(err));
+ log_and_exit("Error on closing dir %s: %s\n", dir,
+ strerror(err));
}
} else {
err = errno;
- loud("Error on processing directory %s: %s\n", dir,
- strerror(err));
+ log_and_exit("Error on processing directory %s: %s\n", dir,
+ strerror(err));
}
}
}
@@ -328,7 +331,7 @@ int delete_socket(void *p, char *full_name)
if( S_ISSOCK(statbuf.st_mode)) {
if( unlink(full_name) ) {
err = errno;
- loud("Error on unlinking file %s: %s\n",
+ log_and_exit("Error on unlinking file %s: %s\n",
full_name, strerror(err));
}
}
@@ -375,23 +378,23 @@ int setup_socket(char *full_name)
if( -1 == bind(fd, (struct sockaddr *)&addr, sizeof(struct sockaddr_un))) {
err = errno;
- loud("Error on binding socket %s: %s\n", socket_file, strerror(err));
+ log_and_exit("Error on binding socket %s: %s\n", socket_file, strerror(err));
}
if( -1 == chmod(socket_file, S_IREAD|S_IWRITE|S_IRGRP|S_IWGRP
|S_IROTH|S_IWOTH)) {
err = errno;
- loud("Error on chmod socket file %s: %s\n", socket_file, strerror(err));
+ log_and_exit("Error on chmod socket file %s: %s\n", socket_file, strerror(err));
}
if( -1 == listen(fd, 5)) {
err = errno;
- loud("Error on listening %s: %s\n", socket_file, strerror(err));
+ log_and_exit("Error on listening %s: %s\n", socket_file, strerror(err));
}
} else {
err = errno;
- loud("Error on socket create %s: %s\n",
+ log_and_exit("Error on socket create %s: %s\n",
socket_file, strerror(err));
}
@@ -453,10 +456,10 @@ int process_plugin(void *p, char *full_name)
setup_socket will exit on error. */
free(item);
item = NULL;
- loud("strdup failed %s\n", full_name);
+ log_and_exit("strdup failed %s\n", full_name);
}
} else {
- loud("Memory allocation failure!\n");
+ log_and_exit("Memory allocation failure!\n");
}
}
}
@@ -480,7 +483,7 @@ void child_cleanup(void)
if( -1 == rc ) {
err = errno;
- warn("Error: waitid %d - %s\n", err, strerror(err));
+ info("waitid %d - %s\n", err, strerror(err));
break;
} else {
if( 0 == rc && si.si_pid == 0 ) {
@@ -611,7 +614,7 @@ void exec_plugin( char *plugin, int client_fd )
if( -1 == exec_rc ) {
int err = errno;
- loud("Error on exec'ing Plugin %s: %s\n",
+ log_and_exit("Error on exec'ing Plugin %s: %s\n",
p_copy, strerror(err));
}
}
@@ -643,7 +646,7 @@ void _serving(void)
}
if( !nfds ) {
- loud("No plugins found in directory %s\n", plugin_dir);
+ log_and_exit("No plugins found in directory %s\n", plugin_dir);
}
nfds += 1;
@@ -654,7 +657,7 @@ void _serving(void)
return;
} else {
err = errno;
- loud("Error on selecting Plugin: %s", strerror(err));
+ log_and_exit("Error on selecting Plugin: %s", strerror(err));
}
} else if( ready > 0 ) {
int fd = 0;
@@ -778,7 +781,7 @@ int main(int argc, char *argv[])
if( !systemd ) {
if ( -1 == daemon(0, 0) ) {
int err = errno;
- loud("Error on calling daemon: %s\n", strerror(err));
+ log_and_exit("Error on calling daemon: %s\n", strerror(err));
}
}
--
1.8.2.1
1.8.2.1