Page MenuHomeFreeBSD

D59277.id185473.diff
No OneTemporary

D59277.id185473.diff

diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c
--- a/usr.sbin/inetd/inetd.c
+++ b/usr.sbin/inetd/inetd.c
@@ -1313,13 +1313,15 @@
umask(mask);
}
if (sep->se_rpc) {
- u_int i;
+ u_int i, j, nreg;
socklen_t len = sep->se_ctrladdr_size;
- struct netconfig *netid, *netid2 = NULL;
+ struct {
+ struct netconfig *nconf;
+ struct netbuf nbuf;
+ } reg[2];
#ifdef INET6
struct sockaddr_in sock;
#endif
- struct netbuf nbuf, nbuf2;
if (getsockname(sep->se_fd,
(struct sockaddr*)&sep->se_ctrladdr, &len) < 0){
@@ -1329,22 +1331,14 @@
sep->se_fd = -1;
return;
}
- nbuf.buf = &sep->se_ctrladdr;
- nbuf.len = sep->se_ctrladdr.sa_len;
+ nreg = 0;
if (sep->se_family == AF_INET)
- netid = sep->se_socktype==SOCK_DGRAM? udpconf:tcpconf;
+ reg[nreg].nconf = sep->se_socktype==SOCK_DGRAM?
+ udpconf:tcpconf;
#ifdef INET6
- else {
- netid = sep->se_socktype==SOCK_DGRAM? udp6conf:tcp6conf;
- if (!sep->se_nomapped) { /* INET and INET6 */
- netid2 = netid==udp6conf? udpconf:tcpconf;
- memset(&sock, 0, sizeof sock); /* ADDR_ANY */
- nbuf2.buf = &sock;
- nbuf2.len = sock.sin_len = sizeof sock;
- sock.sin_family = AF_INET;
- sock.sin_port = sep->se_ctrladdr6.sin6_port;
- }
- }
+ else
+ reg[nreg].nconf = sep->se_socktype==SOCK_DGRAM?
+ udp6conf:tcp6conf;
#else
else {
syslog(LOG_ERR,
@@ -1354,15 +1348,31 @@
sep->se_fd = -1;
return;
}
+#endif
+ reg[nreg].nbuf.buf = &sep->se_ctrladdr;
+ reg[nreg].nbuf.len = sep->se_ctrladdr.sa_len;
+ nreg++;
+#ifdef INET6
+ if (sep->se_family != AF_INET && !sep->se_nomapped) {
+ /* INET and INET6 */
+ reg[nreg].nconf = reg[0].nconf==udp6conf?
+ udpconf:tcpconf;
+ memset(&sock, 0, sizeof sock); /* ADDR_ANY */
+ sock.sin_family = AF_INET;
+ sock.sin_port = sep->se_ctrladdr6.sin6_port;
+ reg[nreg].nbuf.buf = &sock;
+ reg[nreg].nbuf.len = sock.sin_len = sizeof sock;
+ nreg++;
+ }
#endif
if (debug)
print_service("REG ", sep);
for (i = sep->se_rpc_lowvers; i <= sep->se_rpc_highvers; i++) {
- rpcb_unset(sep->se_rpc_prog, i, netid);
- rpcb_set(sep->se_rpc_prog, i, netid, &nbuf);
- if (netid2) {
- rpcb_unset(sep->se_rpc_prog, i, netid2);
- rpcb_set(sep->se_rpc_prog, i, netid2, &nbuf2);
+ for (j = 0; j < nreg; j++) {
+ rpcb_unset(sep->se_rpc_prog, i,
+ reg[j].nconf);
+ rpcb_set(sep->se_rpc_prog, i, reg[j].nconf,
+ &reg[j].nbuf);
}
}
}

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 9, 5:50 AM (9 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37826556
Default Alt Text
D59277.id185473.diff (2 KB)

Event Timeline