summaryrefslogtreecommitdiff
path: root/pimd/pim_msdp_socket.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-08-24 19:54:21 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-08-24 20:34:28 -0400
commite691f179b6c6fc26536e68958f19ff6983a03274 (patch)
tree9b00aba37c7ce79b5f51b314d1a7aa66fa127682 /pimd/pim_msdp_socket.c
parentcc9b06ad5e58968356ab4edf30f3fd9eb7583b47 (diff)
pimd: Cleanup a variety of SA issues
1) Error check return from setsockopt and sockets 2) Check return codes for str2prefix 3) Clean up some potential NULL References Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_msdp_socket.c')
-rw-r--r--pimd/pim_msdp_socket.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c
index 9473462e63..f245a04353 100644
--- a/pimd/pim_msdp_socket.c
+++ b/pimd/pim_msdp_socket.c
@@ -156,9 +156,15 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
if (!ifp) {
zlog_err("%s: Unable to lookup vrf interface: %s",
__PRETTY_FUNCTION__, pim->vrf->name);
+ close(sock);
+ return -1;
+ }
+ if (pim_socket_bind(sock, ifp)) {
+ zlog_err("%s: Unable to bind to socket: %s",
+ __PRETTY_FUNCTION__, safe_strerror(errno));
+ close(sock);
return -1;
}
- pim_socket_bind(sock, ifp);
}
if (pimd_privs.change(ZPRIVS_RAISE)) {
@@ -236,7 +242,13 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
__PRETTY_FUNCTION__, mp->pim->vrf->name);
return -1;
}
- pim_socket_bind(mp->fd, ifp);
+ if (pim_socket_bind(mp->fd, ifp)) {
+ zlog_err("%s: Unable to bind to socket: %s",
+ __PRETTY_FUNCTION__, safe_strerror(errno));
+ close(mp->fd);
+ mp->fd = -1;
+ return -1;
+ }
}
set_nonblocking(mp->fd);