summaryrefslogtreecommitdiffstats
path: root/libexec/ftpd/ftpd.c
diff options
context:
space:
mode:
authoryar <yar@FreeBSD.org>2004-12-12 17:30:28 +0000
committeryar <yar@FreeBSD.org>2004-12-12 17:30:28 +0000
commit1a2e3006535167d1509bedcdace0b6c1e80c5d6d (patch)
tree27bf17cce16563d3aa6a7bdd9e30d1fbef61c398 /libexec/ftpd/ftpd.c
parenta09ae8d2bf0fca60091670de2c7a81a8335f82c8 (diff)
downloadFreeBSD-src-1a2e3006535167d1509bedcdace0b6c1e80c5d6d.zip
FreeBSD-src-1a2e3006535167d1509bedcdace0b6c1e80c5d6d.tar.gz
Never emit a message to stderr: use syslog instead.
When in inetd mode, this prevents bogus messages from appearing on the control channel. When running as a daemon, we shouldn't write to the terminal we used to have at all. PR: bin/74823 MFC after: 1 week
Diffstat (limited to 'libexec/ftpd/ftpd.c')
-rw-r--r--libexec/ftpd/ftpd.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c
index 87aeb74..e686020 100644
--- a/libexec/ftpd/ftpd.c
+++ b/libexec/ftpd/ftpd.c
@@ -273,6 +273,19 @@ main(int argc, char *argv[], char **envp)
LastArgv = envp[-1] + strlen(envp[-1]);
#endif /* OLD_SETPROCTITLE */
+ /*
+ * Prevent diagnostic messages from appearing on stderr.
+ * We run as a daemon or from inetd; in both cases, there's
+ * more reason in logging to syslog.
+ */
+ (void) freopen(_PATH_DEVNULL, "w", stderr);
+ opterr = 0;
+
+ /*
+ * LOG_NDELAY sets up the logging connection immediately,
+ * necessary for anonymous ftp's that chroot and can't do it later.
+ */
+ openlog("ftpd", LOG_PID | LOG_NDELAY, LOG_FTP);
while ((ch = getopt(argc, argv,
"46a:AdDEhlmMoOp:P:rRSt:T:u:UvW")) != -1) {
@@ -367,7 +380,7 @@ main(int argc, char *argv[], char **envp)
val = strtol(optarg, &optarg, 8);
if (*optarg != '\0' || val < 0)
- warnx("bad value for -u");
+ syslog(LOG_WARNING, "bad value for -u");
else
defumask = val;
break;
@@ -385,7 +398,7 @@ main(int argc, char *argv[], char **envp)
break;
default:
- warnx("unknown flag -%c ignored", optopt);
+ syslog(LOG_WARNING, "unknown flag -%c ignored", optopt);
break;
}
}
@@ -393,13 +406,6 @@ main(int argc, char *argv[], char **envp)
#ifdef VIRTUAL_HOSTING
inithosts();
#endif
- (void) freopen(_PATH_DEVNULL, "w", stderr);
-
- /*
- * LOG_NDELAY sets up the logging connection immediately,
- * necessary for anonymous ftp's that chroot and can't do it later.
- */
- openlog("ftpd", LOG_PID | LOG_NDELAY, LOG_FTP);
if (daemon_mode) {
int *ctl_sock, fd, maxfd = -1, nfds, i;
OpenPOWER on IntegriCloud