summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rwhod
diff options
context:
space:
mode:
authorhrs <hrs@FreeBSD.org>2013-08-17 07:12:52 +0000
committerhrs <hrs@FreeBSD.org>2013-08-17 07:12:52 +0000
commitd635351bf100453ec236d47fe886f6816ec75d50 (patch)
tree0b629afbbc371af46abe8a5b9b71b31746c873a3 /usr.sbin/rwhod
parent3c951b7b9db1d6e936581f67a606718572a10de0 (diff)
downloadFreeBSD-src-d635351bf100453ec236d47fe886f6816ec75d50.zip
FreeBSD-src-d635351bf100453ec236d47fe886f6816ec75d50.tar.gz
Unbreak rwhod(8):
- It did not work with GENERIC kernel after r250603 because options PROCDESC was required for pdfork(2). It now just uses fork(2) instead when this syscall is not available. - Fix verify(). This function was broken in r250602 because the outermost "()" was removed from the condition !(isalnum() || ispunct()). It prevented hostnames including "-", for example.
Diffstat (limited to 'usr.sbin/rwhod')
-rw-r--r--usr.sbin/rwhod/rwhod.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/usr.sbin/rwhod/rwhod.c b/usr.sbin/rwhod/rwhod.c
index 26b0500..d6a597f 100644
--- a/usr.sbin/rwhod/rwhod.c
+++ b/usr.sbin/rwhod/rwhod.c
@@ -274,6 +274,15 @@ main(int argc, char *argv[])
exit(1);
if (!quiet_mode) {
pid_child_receiver = pdfork(&fdp, 0);
+ if (pid_child_receiver == -1) {
+ if (errno != ENOSYS) {
+ syslog(LOG_ERR, "pdfork: %m");
+ exit(1);
+ } else {
+ pid_child_receiver = fork();
+ fdp = -1;
+ }
+ }
if (pid_child_receiver == 0) {
receiver_process();
} else if (pid_child_receiver > 0) {
@@ -328,7 +337,7 @@ verify(char *name, int maxlen)
size = 0;
while (*name != '\0' && size < maxlen - 1) {
- if (!isascii(*name) || !isalnum(*name) || ispunct(*name))
+ if (!isascii(*name) || !(isalnum(*name) || ispunct(*name)))
return (0);
name++;
size++;
OpenPOWER on IntegriCloud