summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorcjc <cjc@FreeBSD.org>2001-08-27 21:37:15 +0000
committercjc <cjc@FreeBSD.org>2001-08-27 21:37:15 +0000
commite19dd0c5938bb188e794359189cd55a5961e77b2 (patch)
treeb4ef55f985360ed190f86cbb22cd9e683dbf85d7 /usr.sbin
parent8375ce85c2b31a7d940f0679d1e289ba5fee680e (diff)
downloadFreeBSD-src-e19dd0c5938bb188e794359189cd55a5961e77b2.zip
FreeBSD-src-e19dd0c5938bb188e794359189cd55a5961e77b2.tar.gz
Gives syslogd(8) the ability to refresh its idea of the hostname of
the system on which it is running. The hostname is reloaded when 'HUPped' and a log message generated to note a change (before anyone points it out, this is not an added security feature). PR: bin/24444 Reviewed by: freebsd-audit Approved by: ru MFC after: 2 weeks
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/syslogd/syslogd.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 3866d73..d300c84 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -318,7 +318,7 @@ main(argc, argv)
struct sockaddr_un sunx, fromunix;
struct sockaddr_storage frominet;
FILE *fp;
- char *p, *hname, line[MAXLINE + 1];
+ char *hname, line[MAXLINE + 1];
struct timeval tv, *tvp;
struct sigaction sact;
sigset_t mask;
@@ -398,12 +398,6 @@ main(argc, argv)
consfile.f_type = F_CONSOLE;
(void)strcpy(consfile.f_un.f_fname, ctty + sizeof _PATH_DEV - 1);
- (void)gethostname(LocalHostName, sizeof(LocalHostName));
- if ((p = strchr(LocalHostName, '.')) != NULL) {
- *p++ = '\0';
- LocalDomain = p;
- } else
- LocalDomain = "";
(void)strcpy(bootfile, getbootfile());
(void)signal(SIGTERM, die);
(void)signal(SIGINT, Debug ? die : SIG_IGN);
@@ -1346,10 +1340,26 @@ init(signo)
char cline[LINE_MAX];
char prog[NAME_MAX+1];
char host[MAXHOSTNAMELEN];
+ char oldLocalHostName[MAXHOSTNAMELEN];
+ char hostMsg[2*MAXHOSTNAMELEN+40];
dprintf("init\n");
/*
+ * Load hostname (may have changed).
+ */
+ if (signo != 0)
+ (void)strlcpy(oldLocalHostName, LocalHostName,
+ sizeof(oldLocalHostName));
+ if (gethostname(LocalHostName, sizeof(LocalHostName)))
+ err(EX_OSERR, "gethostname() failed");
+ if ((p = strchr(LocalHostName, '.')) != NULL) {
+ *p++ = '\0';
+ LocalDomain = p;
+ } else
+ LocalDomain = "";
+
+ /*
* Close all open log files.
*/
Initialized = 0;
@@ -1498,6 +1508,16 @@ init(signo)
logmsg(LOG_SYSLOG|LOG_INFO, "syslogd: restart", LocalHostName, ADDDATE);
dprintf("syslogd: restarted\n");
+ /*
+ * Log a change in hostname, but only on a restart.
+ */
+ if (signo != 0 && strcmp(oldLocalHostName, LocalHostName) != 0) {
+ (void)snprintf(hostMsg, sizeof(hostMsg),
+ "syslogd: hostname changed, \"%s\" to \"%s\"",
+ oldLocalHostName, LocalHostName);
+ logmsg(LOG_SYSLOG|LOG_INFO, hostMsg, LocalHostName, ADDDATE);
+ dprintf("%s\n", hostMsg);
+ }
}
/*
OpenPOWER on IntegriCloud