getaddrinfo: Fix resource leak after strdup failure in gethosts [BZ #25425]
Commit Message
Filip Ochnik spotted that one of the error jumps in gethosts fails to
call __resolv_context_put to release the resolver context.
Fixes commit 352f4ff9a268b81ef5d4b2413f582565806e4790 ("resolv:
Introduce struct resolv_context [BZ #21668]") and commit
964263bb8d650f1681665c55704fb01a8e725621 ("getaddrinfo: Release
resolver context on error in gethosts [BZ #21885]").
-----
sysdeps/posix/getaddrinfo.c | 1 +
1 file changed, 1 insertion(+)
Comments
On 20/01/20 10:30 pm, Florian Weimer wrote:
> Filip Ochnik spotted that one of the error jumps in gethosts fails to
> call __resolv_context_put to release the resolver context.
>
> Fixes commit 352f4ff9a268b81ef5d4b2413f582565806e4790 ("resolv:
> Introduce struct resolv_context [BZ #21668]") and commit
> 964263bb8d650f1681665c55704fb01a8e725621 ("getaddrinfo: Release
> resolver context on error in gethosts [BZ #21885]").
>
OK for master.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* Siddhesh Poyarekar:
> On 20/01/20 10:30 pm, Florian Weimer wrote:
>> Filip Ochnik spotted that one of the error jumps in gethosts fails to
>> call __resolv_context_put to release the resolver context.
>>
>> Fixes commit 352f4ff9a268b81ef5d4b2413f582565806e4790 ("resolv:
>> Introduce struct resolv_context [BZ #21668]") and commit
>> 964263bb8d650f1681665c55704fb01a8e725621 ("getaddrinfo: Release
>> resolver context on error in gethosts [BZ #21885]").
>>
> OK for master.
>
> Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Thanks, pushed.
Florian
@@ -288,6 +288,7 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
canonbuf = __strdup (localcanon); \
if (canonbuf == NULL) \
{ \
+ __resolv_context_put (res_ctx); \
result = -EAI_SYSTEM; \
goto free_and_return; \
} \