forked from rpms/glibc
32 lines
957 B
Diff
32 lines
957 B
Diff
|
Based on the following commit, adjusted for glibc-2.28 in RHEL-8:
|
||
|
|
||
|
commit 5eabdb6a6ac1599d23dd5966a37417215950245f
|
||
|
Author: Andreas Schwab <schwab@suse.de>
|
||
|
Date: Wed Dec 6 14:48:22 2023 +0100
|
||
|
|
||
|
getaddrinfo: translate ENOMEM to EAI_MEMORY (bug 31163)
|
||
|
|
||
|
When __resolv_context_get returns NULL due to out of memory, translate it
|
||
|
to a return value of EAI_MEMORY.
|
||
|
|
||
|
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||
|
index 46046504a6858f2e..d0708f3e84e20025 100644
|
||
|
--- a/sysdeps/posix/getaddrinfo.c
|
||
|
+++ b/sysdeps/posix/getaddrinfo.c
|
||
|
@@ -777,7 +777,14 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||
|
res_ctx = __resolv_context_get ();
|
||
|
res_enable_inet6 = __resolv_context_disable_inet6 (res_ctx);
|
||
|
if (res_ctx == NULL)
|
||
|
- no_more = 1;
|
||
|
+ {
|
||
|
+ if (errno == ENOMEM)
|
||
|
+ {
|
||
|
+ result = -EAI_MEMORY;
|
||
|
+ goto free_and_return;
|
||
|
+ }
|
||
|
+ no_more = 1;
|
||
|
+ }
|
||
|
|
||
|
while (!no_more)
|
||
|
{
|