fixeria submitted this change.

View Change

Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
socket: osmo_sockaddr_from_str_and_uint(): fix memleak

`addrinfo_helper()` internally calls `getaddrinfo()`, whose result
must be freed with `freeaddrinfo()`. On the size-check error path
the function returns early without freeing. Fix this.

Change-Id: Ib05e1b8f2465e0db79e7b45de151dc9945e27924
---
M src/core/socket.c
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/core/socket.c b/src/core/socket.c
index 6cd82f0..3a2d7b7 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1762,8 +1762,10 @@
if (!ai)
return -EIO;

- if (ai->ai_addrlen > sizeof(*osa_out))
+ if (ai->ai_addrlen > sizeof(*osa_out)) {
+ freeaddrinfo(ai);
return -ENOSPC;
+ }

memcpy(&osa_out->u.sa, ai->ai_addr, ai->ai_addrlen);
freeaddrinfo(ai);

To view, visit change 42404. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib05e1b8f2465e0db79e7b45de151dc9945e27924
Gerrit-Change-Number: 42404
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>