diff options
author | cjc <cjc@FreeBSD.org> | 2001-07-02 15:26:47 +0000 |
---|---|---|
committer | cjc <cjc@FreeBSD.org> | 2001-07-02 15:26:47 +0000 |
commit | fd2fcd17ee2995f9eec606ef9b918fe0e766545f (patch) | |
tree | 6c257da0031d55cd0ae5ed7d2932bd6d7cb37f03 /usr.sbin/syslogd/syslogd.c | |
parent | 460cef587ed049166cb98eafe2e9e0fbd0f59ea1 (diff) | |
download | FreeBSD-src-fd2fcd17ee2995f9eec606ef9b918fe0e766545f.zip FreeBSD-src-fd2fcd17ee2995f9eec606ef9b918fe0e766545f.tar.gz |
Lose any stray host bits that a user may have entered when providing
a network number and netmask to the '-a' option.
Approved by: ru
MFC after: 1 week
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
-rw-r--r-- | usr.sbin/syslogd/syslogd.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index c66550c..dc6a7ec 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -1873,9 +1873,9 @@ allowaddr(s) if (res->ai_family == AF_INET) { ap.a_mask.ss_len = sizeof(struct sockaddr_in); maskp = &((struct sockaddr_in *)&ap.a_mask)->sin_addr; + addrp = &((struct sockaddr_in *)&ap.a_addr)->sin_addr; if (masklen < 0) { /* use default netmask */ - addrp = &((struct sockaddr_in *)&ap.a_addr)->sin_addr; if (IN_CLASSA(ntohl(addrp->s_addr))) maskp->s_addr = htonl(IN_CLASSA_NET); else if (IN_CLASSB(ntohl(addrp->s_addr))) @@ -1889,6 +1889,8 @@ allowaddr(s) freeaddrinfo(res); return -1; } + /* Lose any host bits in the network number. */ + addrp->s_addr &= maskp->s_addr; } #ifdef INET6 else if (res->ai_family == AF_INET6 && masklen <= 128) { |