summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rtadvd/rrenum.c
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-03-09 14:51:05 +0000
committershin <shin@FreeBSD.org>2000-03-09 14:51:05 +0000
commit48f6832d33ea06fc0dace0e3707d8dc45125eeb9 (patch)
tree0e9656b9c4d33baa86e725426523434aabb06d88 /usr.sbin/rtadvd/rrenum.c
parent88d80a54ba77dd6d68d777e737b95fc2aa4d78de (diff)
downloadFreeBSD-src-48f6832d33ea06fc0dace0e3707d8dc45125eeb9.zip
FreeBSD-src-48f6832d33ea06fc0dace0e3707d8dc45125eeb9.tar.gz
Added several socket close() which were mistakenly forgotten.
Reported by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
Diffstat (limited to 'usr.sbin/rtadvd/rrenum.c')
-rw-r--r--usr.sbin/rtadvd/rrenum.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/usr.sbin/rtadvd/rrenum.c b/usr.sbin/rtadvd/rrenum.c
index ec69ff2..f4c71f1 100644
--- a/usr.sbin/rtadvd/rrenum.c
+++ b/usr.sbin/rtadvd/rrenum.c
@@ -206,12 +206,6 @@ do_pco(struct icmp6_router_renum *rr, int len, struct rr_pco_match *rpm)
if ((rr_pco_check(len, rpm) != NULL))
return 1;
- if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
- syslog(LOG_ERR, "<%s> socket: %s", __FUNCTION__,
- strerror(errno));
- exit(1);
- }
-
memset(&irr, 0, sizeof(irr));
irr.irr_origin = PR_ORIG_RR;
irr.irr_m_len = rpm->rpm_matchlen;
@@ -260,6 +254,12 @@ do_rr(int len, struct icmp6_router_renum *rr)
/* get iflist block from kernel again, to get up-to-date information */
init_iflist();
+ if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+ syslog(LOG_ERR, "<%s> socket: %s", __FUNCTION__,
+ strerror(errno));
+ exit(1);
+ }
+
while (cp < lim) {
int rpmlen;
@@ -268,6 +268,7 @@ do_rr(int len, struct icmp6_router_renum *rr)
tooshort:
syslog(LOG_ERR, "<%s> pkt too short. left len = %d. "
"gabage at end of pkt?", __FUNCTION__, len);
+ close(s);
return 1;
}
rpmlen = rpm->rpm_len << 3;
@@ -283,7 +284,7 @@ do_rr(int len, struct icmp6_router_renum *rr)
cp += rpmlen;
len -= rpmlen;
}
-
+ close(s);
return 0;
}
OpenPOWER on IntegriCloud