summaryrefslogtreecommitdiff
path: root/lib/libfrr.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libfrr.c')
-rw-r--r--lib/libfrr.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/lib/libfrr.c b/lib/libfrr.c
index 3e2e008223..6cb8711edf 100644
--- a/lib/libfrr.c
+++ b/lib/libfrr.c
@@ -534,7 +534,7 @@ struct thread_master *frr_init(void)
snprintf(p_pathspace, sizeof(p_pathspace), "/%s",
di->pathspace);
- snprintf(config_default, sizeof(config_default), "%s%s/%s%s.conf",
+ snprintf(config_default, sizeof(config_default), "%s%s%s%s.conf",
frr_sysconfdir, p_pathspace, di->name, p_instance);
snprintf(pidfile_default, sizeof(pidfile_default), "%s%s/%s%s.pid",
frr_vtydir, p_pathspace, di->name, p_instance);
@@ -768,6 +768,8 @@ void frr_vty_serv(void)
static void frr_terminal_close(int isexit)
{
+ int nullfd;
+
if (daemon_ctl_sock != -1) {
close(daemon_ctl_sock);
daemon_ctl_sock = -1;
@@ -783,11 +785,16 @@ static void frr_terminal_close(int isexit)
fflush(stdout);
}
- int nullfd = open("/dev/null", O_RDONLY | O_NOCTTY);
- dup2(nullfd, 0);
- dup2(nullfd, 1);
- dup2(nullfd, 2);
- close(nullfd);
+ nullfd = open("/dev/null", O_RDONLY | O_NOCTTY);
+ if (nullfd == -1) {
+ zlog_err("%s: failed to open /dev/null: %s", __func__,
+ safe_strerror(errno));
+ } else {
+ dup2(nullfd, 0);
+ dup2(nullfd, 1);
+ dup2(nullfd, 2);
+ close(nullfd);
+ }
}
static struct thread *daemon_ctl_thread = NULL;
@@ -849,10 +856,15 @@ void frr_run(struct thread_master *master)
}
} else if (di->daemon_mode) {
int nullfd = open("/dev/null", O_RDONLY | O_NOCTTY);
- dup2(nullfd, 0);
- dup2(nullfd, 1);
- dup2(nullfd, 2);
- close(nullfd);
+ if (nullfd == -1) {
+ zlog_err("%s: failed to open /dev/null: %s", __func__,
+ safe_strerror(errno));
+ } else {
+ dup2(nullfd, 0);
+ dup2(nullfd, 1);
+ dup2(nullfd, 2);
+ close(nullfd);
+ }
if (daemon_ctl_sock != -1)
close(daemon_ctl_sock);
@@ -886,6 +898,7 @@ void frr_fini(void)
zprivs_terminate(di->privs);
/* signal_init -> nothing needed */
thread_master_free(master);
+ master = NULL;
closezlog();
/* frrmod_init -> nothing needed / hooks */