svn commit: r310456 - head/usr.sbin/syslogd
Hiroki Sato
hrs at FreeBSD.org
Fri Dec 23 06:29:25 UTC 2016
Author: hrs
Date: Fri Dec 23 06:29:24 2016
New Revision: 310456
URL: https://svnweb.freebsd.org/changeset/base/310456
Log:
- More ifdef INET and INET6.
- Use STDERR_FILENO + 1 instead of "3".
- Fix dprintf() in cvthname().
Modified:
head/usr.sbin/syslogd/syslogd.c
Modified: head/usr.sbin/syslogd/syslogd.c
==============================================================================
--- head/usr.sbin/syslogd/syslogd.c Fri Dec 23 05:07:28 2016 (r310455)
+++ head/usr.sbin/syslogd/syslogd.c Fri Dec 23 06:29:24 2016 (r310456)
@@ -748,6 +748,7 @@ socklist_recv_sock(struct socklist *sl)
static void
unmapped(struct sockaddr *sa)
{
+#if defined(INET) && defined(INET6)
struct sockaddr_in6 *sin6;
struct sockaddr_in sin;
@@ -766,6 +767,10 @@ unmapped(struct sockaddr *sa)
memcpy(&sin.sin_addr, &sin6->sin6_addr.s6_addr[12],
sizeof(sin.sin_addr));
memcpy(sa, &sin, sizeof(sin));
+#else
+ if (sa == NULL)
+ return;
+#endif
}
static void
@@ -1533,24 +1538,23 @@ cvthname(struct sockaddr *f)
sigset_t omask, nmask;
static char hname[NI_MAXHOST], ip[NI_MAXHOST];
- dprintf("cvthname(%d) len = %d, %zu\n", f->sa_family, f->sa_len, sizeof(struct sockaddr_in6));
+ dprintf("cvthname(%d) len = %d\n", f->sa_family, f->sa_len);
error = getnameinfo(f, f->sa_len, ip, sizeof(ip), NULL, 0,
NI_NUMERICHOST);
- dprintf("cvthname(%s)\n", ip);
-
if (error) {
dprintf("Malformed from address %s\n", gai_strerror(error));
return ("???");
}
+ dprintf("cvthname(%s)\n", ip);
+
if (!resolve)
return (ip);
sigemptyset(&nmask);
sigaddset(&nmask, SIGHUP);
sigprocmask(SIG_BLOCK, &nmask, &omask);
- error = getnameinfo((struct sockaddr *)f,
- ((struct sockaddr *)f)->sa_len,
- hname, sizeof hname, NULL, 0, NI_NAMEREQD);
+ error = getnameinfo(f, f->sa_len, hname, sizeof(hname),
+ NULL, 0, NI_NAMEREQD);
sigprocmask(SIG_SETMASK, &omask, NULL);
if (error) {
dprintf("Host name for your address (%s) unknown\n", ip);
@@ -2393,7 +2397,9 @@ allowaddr(char *s)
struct servent *se;
int masklen = -1;
struct addrinfo hints, *res;
+#ifdef INET
in_addr_t *addrp, *maskp;
+#endif
#ifdef INET6
uint32_t *addr6p, *mask6p;
#endif
@@ -2459,7 +2465,9 @@ allowaddr(char *s)
.ss_family = res->ai_family,
.ss_len = res->ai_addrlen
};
- if (res->ai_family == AF_INET) {
+ switch (res->ai_family) {
+#ifdef INET
+ case AF_INET:
maskp = &sstosin(&ap->a_mask)->sin_addr.s_addr;
addrp = &sstosin(&ap->a_addr)->sin_addr.s_addr;
if (masklen < 0) {
@@ -2481,9 +2489,14 @@ allowaddr(char *s)
}
/* Lose any host bits in the network number. */
*addrp &= *maskp;
- }
+ break;
+#endif
#ifdef INET6
- else if (res->ai_family == AF_INET6 && masklen <= 128) {
+ case AF_INET6:
+ if (masklen > 128) {
+ freeaddrinfo(res);
+ return (-1);
+ }
if (masklen < 0)
masklen = 128;
mask6p = (uint32_t *)&sstosin6(&ap->a_mask)->sin6_addr.s6_addr32[0];
@@ -2501,9 +2514,9 @@ allowaddr(char *s)
masklen -= 32;
}
}
- }
+ break;
#endif
- else {
+ default:
freeaddrinfo(res);
return (-1);
}
@@ -2527,12 +2540,12 @@ allowaddr(char *s)
printf("allowaddr: rule ");
if (ap->isnumeric) {
printf("numeric, ");
- getnameinfo((struct sockaddr *)&ap->a_addr,
- ((struct sockaddr *)&ap->a_addr)->sa_len,
+ getnameinfo(sstosa(&ap->a_addr),
+ (sstosa(&ap->a_addr))->sa_len,
ip, sizeof ip, NULL, 0, NI_NUMERICHOST);
printf("addr = %s, ", ip);
- getnameinfo((struct sockaddr *)&ap->a_mask,
- ((struct sockaddr *)&ap->a_mask)->sa_len,
+ getnameinfo(sstosa(&ap->a_mask),
+ (sstosa(&ap->a_mask))->sa_len,
ip, sizeof ip, NULL, 0, NI_NUMERICHOST);
printf("mask = %s; ", ip);
} else {
@@ -2552,7 +2565,9 @@ validate(struct sockaddr *sa, const char
int i;
char name[NI_MAXHOST], ip[NI_MAXHOST], port[NI_MAXSERV];
struct allowedpeer *ap;
+#ifdef INET
struct sockaddr_in *sin4, *a4p = NULL, *m4p = NULL;
+#endif
#ifdef INET6
struct sockaddr_in6 *sin6, *a6p = NULL, *m6p = NULL;
#endif
@@ -2602,7 +2617,8 @@ validate(struct sockaddr *sa, const char
dprintf("rejected in rule %d due to address family mismatch.\n", i);
continue;
}
- if (ap->a_addr.ss_family == AF_INET) {
+#ifdef INET
+ else if (ap->a_addr.ss_family == AF_INET) {
sin4 = satosin(sa);
a4p = satosin(&ap->a_addr);
m4p = satosin(&ap->a_mask);
@@ -2612,6 +2628,7 @@ validate(struct sockaddr *sa, const char
continue;
}
}
+#endif
#ifdef INET6
else if (ap->a_addr.ss_family == AF_INET6) {
sin6 = satosin6(sa);
@@ -2702,7 +2719,7 @@ p_open(const char *prog, pid_t *rpid)
dup2(pfd[0], STDIN_FILENO);
dup2(nulldesc, STDOUT_FILENO);
dup2(nulldesc, STDERR_FILENO);
- closefrom(3);
+ closefrom(STDERR_FILENO + 1);
(void)execvp(_PATH_BSHELL, argv);
_exit(255);
More information about the svn-src-head
mailing list