Change in osmo-hlr[master]: mdns_sock.c: fix resource leak of sock

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

osmith gerrit-no-reply at lists.osmocom.org
Tue Jan 14 09:44:23 UTC 2020


osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/16845 )

Change subject: mdns_sock.c: fix resource leak of sock
......................................................................

mdns_sock.c: fix resource leak of sock

Fixes: CID#207542
Change-Id: I0216b17c3ff67910a39520e2f2a5a16e23575a86
---
M src/mslookup/mdns_sock.c
1 file changed, 7 insertions(+), 5 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved



diff --git a/src/mslookup/mdns_sock.c b/src/mslookup/mdns_sock.c
index 5291660..fbe6e82 100644
--- a/src/mslookup/mdns_sock.c
+++ b/src/mslookup/mdns_sock.c
@@ -84,7 +84,7 @@
 	rc = setsockopt(sock, IPPROTO_IP, IP_MULTICAST_IF, (char*)&iface, sizeof(iface));
 	if (rc == -1) {
 		LOGP(DMSLOOKUP, LOGL_ERROR, "osmo_mdns_sock_init: setsockopt: %s\n", strerror(errno));
-		goto error;
+		goto error_sock;
 	}
 	memcpy(&multicast_req.imr_multiaddr, &((struct sockaddr_in*)(ret->ai->ai_addr))->sin_addr,
 	       sizeof(multicast_req.imr_multiaddr));
@@ -92,7 +92,7 @@
 	rc = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&multicast_req, sizeof(multicast_req));
 	if (rc == -1) {
 		LOGP(DMSLOOKUP, LOGL_ERROR, "osmo_mdns_sock_init: setsockopt: %s\n", strerror(errno));
-		goto error;
+		goto error_sock;
 	}
 
 	/* Always allow binding the same IP and port twice. This is needed in OsmoHLR (where the code becomes cleaner by
@@ -102,20 +102,22 @@
 	rc = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&y, sizeof(y));
 	if (rc == -1) {
 		LOGP(DMSLOOKUP, LOGL_ERROR, "osmo_mdns_sock_init: setsockopt: %s\n", strerror(errno));
-		goto error;
+		goto error_sock;
 	}
 
 	/* Bind and register osmo_fd callback */
 	rc = bind(sock, ret->ai->ai_addr, ret->ai->ai_addrlen);
 	if (rc == -1) {
 		LOGP(DMSLOOKUP, LOGL_ERROR, "osmo_mdns_sock_init: bind: %s\n", strerror(errno));
-		goto error;
+		goto error_sock;
 	}
 	osmo_fd_setup(&ret->osmo_fd, sock, OSMO_FD_READ, cb, data, priv_nr);
 	if (osmo_fd_register(&ret->osmo_fd) != 0)
-		goto error;
+		goto error_sock;
 
 	return ret;
+error_sock:
+	close(sock);
 error:
 	if (ret->ai)
 		freeaddrinfo(ret->ai);

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/16845
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: I0216b17c3ff67910a39520e2f2a5a16e23575a86
Gerrit-Change-Number: 16845
Gerrit-PatchSet: 2
Gerrit-Owner: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200114/541b8a8e/attachment.htm>


More information about the gerrit-log mailing list