Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
server:monitoring
icinga
icinga-1.14.2_-_improve_error_handling.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File icinga-1.14.2_-_improve_error_handling.patch of Package icinga
From 342e35c0b867713e5c1eb5724c3f258b61c2fbd0 Mon Sep 17 00:00:00 2001 From: Jia Zhouyang <jiazhouyang@nudt.edu.cn> Date: Thu, 1 Mar 2018 15:17:58 +0800 Subject: [PATCH 1/3] Add error handling for external APIs Add error handling code for chdir and pipe. When those APIs fail, print error message and return. --- base/utils.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/base/utils.c b/base/utils.c index 606e682e3..976a225f4 100644 --- a/base/utils.c +++ b/base/utils.c @@ -480,7 +480,10 @@ int my_system_r(icinga_macros *mac, char *cmd, int timeout, int *early_timeout, #endif /* create a pipe */ - pipe(fd); + if (pipe(fd) < 0) { + logit(NSLOG_RUNTIME_WARNING, TRUE, "Warning: pipe() in my_system_r() failed for command \"%s\"\n", cmd); + return STATE_UNKNOWN; + } /* make the pipe non-blocking */ fcntl(fd[0], F_SETFL, O_NONBLOCK); @@ -2507,9 +2510,14 @@ int daemon_init(void) { /* change working directory. scuttle home if we're dumping core */ homedir = getenv("HOME"); if (daemon_dumps_core == TRUE && homedir != NULL) - chdir(homedir); + val = chdir(homedir); else - chdir("/"); + val = chdir("/"); + if (val < 0) { + logit(NSLOG_RUNTIME_ERROR, TRUE, "Failed to change dir: %s\n", strerror(errno)); + cleanup(); + exit(ERROR); + } umask(S_IWGRP | S_IWOTH); From c723ba0ecd820a8a803257bfeaad67fd50a7b24f Mon Sep 17 00:00:00 2001 From: Jia Zhouyang <jiazhouyang@nudt.edu.cn> Date: Thu, 1 Mar 2018 15:23:32 +0800 Subject: [PATCH 2/3] Add error handling for chown When chown fails, print error message and return. --- base/logging.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/base/logging.c b/base/logging.c index cc0245086..a222415aa 100644 --- a/base/logging.c +++ b/base/logging.c @@ -606,7 +606,10 @@ int rotate_log_file(time_t rotation_time) { if (stat_result == 0) { chmod(log_file, log_file_stat.st_mode); - chown(log_file, log_file_stat.st_uid, log_file_stat.st_gid); + if (chown(log_file, log_file_stat.st_uid, log_file_stat.st_gid) < 0) { + perror("chown failed"); + return ERROR; + } } /* log current host and service state if activated*/ From 3beb2ed1c6fef73c81653809f44c938f7b7d1300 Mon Sep 17 00:00:00 2001 From: Jia Zhouyang <jiazhouyang@nudt.edu.cn> Date: Thu, 1 Mar 2018 15:28:32 +0800 Subject: [PATCH 3/3] Add error handling for chown When chown fails, print error message and return. --- cgi/cgiutils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cgi/cgiutils.c b/cgi/cgiutils.c index 694ba383b..bc8765601 100644 --- a/cgi/cgiutils.c +++ b/cgi/cgiutils.c @@ -3047,7 +3047,10 @@ int rotate_cgi_log_file() { if (stat_result == 0) { chmod(cgi_log_file, log_file_stat.st_mode); - chown(cgi_log_file, log_file_stat.st_uid, log_file_stat.st_gid); + if (chown(cgi_log_file, log_file_stat.st_uid, log_file_stat.st_gid) < 0) { + perror("chown failed"); + return ERROR; + } } my_free(log_archive);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor