Skip to content

Commit b920e2e

Browse files
authored
Merge pull request #83 from dermesser/multicast-memory-leak-82
Fix memory leak in create_multicast_socket
2 parents b4f5193 + 261b84e commit b920e2e

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

C/inet/libinetsocket.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ int create_multicast_socket(const char *group, const char *port,
10011001
debug_write(errstring);
10021002
#endif
10031003
close(sfd);
1004+
freeaddrinfo(result);
10041005
errno = errno_saved;
10051006

10061007
return -1;
@@ -1021,6 +1022,7 @@ int create_multicast_socket(const char *group, const char *port,
10211022
if (-1 == check_error(ioctl(sfd, SIOCGIFINDEX, &interface))) {
10221023
int errno_saved = errno;
10231024
close(sfd);
1025+
freeaddrinfo(result);
10241026
errno = errno_saved;
10251027
return -1;
10261028
}
@@ -1032,13 +1034,15 @@ int create_multicast_socket(const char *group, const char *port,
10321034
&mreq4, sizeof(struct ip_mreqn)))) {
10331035
int errno_saved = errno;
10341036
close(sfd);
1037+
freeaddrinfo(result);
10351038
errno = errno_saved;
10361039
return -1;
10371040
}
10381041
if (-1 == check_error(setsockopt(sfd, IPPROTO_IP, IP_MULTICAST_IF,
10391042
&mreq4, sizeof(struct ip_mreqn)))) {
10401043
int errno_saved = errno;
10411044
close(sfd);
1045+
freeaddrinfo(result);
10421046
errno = errno_saved;
10431047
return -1;
10441048
}
@@ -1059,6 +1063,7 @@ int create_multicast_socket(const char *group, const char *port,
10591063
if (-1 == check_error(ioctl(sfd, SIOCGIFINDEX, &interface))) {
10601064
int errno_saved = errno;
10611065
close(sfd);
1066+
freeaddrinfo(result);
10621067
errno = errno_saved;
10631068
return -1;
10641069
}
@@ -1070,6 +1075,7 @@ int create_multicast_socket(const char *group, const char *port,
10701075
&mreq6, sizeof(struct ipv6_mreq)))) {
10711076
int errno_saved = errno;
10721077
close(sfd);
1078+
freeaddrinfo(result);
10731079
errno = errno_saved;
10741080
return -1;
10751081
}
@@ -1078,11 +1084,13 @@ int create_multicast_socket(const char *group, const char *port,
10781084
sizeof(mreq6.ipv6mr_interface)))) {
10791085
int errno_saved = errno;
10801086
close(sfd);
1087+
freeaddrinfo(result);
10811088
errno = errno_saved;
10821089
return -1;
10831090
}
10841091
}
10851092

1093+
freeaddrinfo(result);
10861094
return sfd;
10871095
}
10881096

0 commit comments

Comments
 (0)