diff options
author | shin <shin@FreeBSD.org> | 2000-03-09 14:51:05 +0000 |
---|---|---|
committer | shin <shin@FreeBSD.org> | 2000-03-09 14:51:05 +0000 |
commit | 48f6832d33ea06fc0dace0e3707d8dc45125eeb9 (patch) | |
tree | 0e9656b9c4d33baa86e725426523434aabb06d88 /usr.sbin/rtadvd/rrenum.c | |
parent | 88d80a54ba77dd6d68d777e737b95fc2aa4d78de (diff) | |
download | FreeBSD-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.c | 15 |
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; } |