summaryrefslogtreecommitdiff
path: root/ext/socket
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2024-07-20 13:00:32 +0900
committernagachika <nagachika@ruby-lang.org>2024-07-20 13:05:33 +0900
commit3fe51aa26867159af574fac8eba7ae86a0b30971 (patch)
tree97c89f7aa2e072bacc53cd6283cee77cdd5ba121 /ext/socket
parentc10c73fd16f1b7c9b658afee2b1b53ecfaed4fa4 (diff)
merge revision(s) fba8aff7af450e476e97b62385427dfa51850955, d8c6e91748871ab2287d7703347847fe18a292d2: [Backport #20592]
[Bug #20592] Fix segfault when sending NULL to freeaddrinfo On alpine freeaddrinfo does not accept NULL pointer Fix dangling `else`
Diffstat (limited to 'ext/socket')
-rw-r--r--ext/socket/raddrinfo.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c
index 269edc4dad..45b4cad38f 100644
--- a/ext/socket/raddrinfo.c
+++ b/ext/socket/raddrinfo.c
@@ -287,8 +287,9 @@ numeric_getaddrinfo(const char *node, const char *service,
void
rb_freeaddrinfo(struct rb_addrinfo *ai)
{
- if (!ai->allocated_by_malloc)
- freeaddrinfo(ai->ai);
+ if (!ai->allocated_by_malloc) {
+ if (ai->ai) freeaddrinfo(ai->ai);
+ }
else {
struct addrinfo *ai1, *ai2;
ai1 = ai->ai;