nss: Call __resolv_context_put before early return in get*_r [BZ #21932]

This corrects an oversight introduced in commit
352f4ff9a268b81ef5d4b2413f582565806e4790 (resolv: Introduce struct
resolv_context).

(cherry picked from commit 3016149819268b14660f791b971910ccc2cc13e5)
This commit is contained in:
Florian Weimer 2017-08-10 09:10:36 +02:00
parent 82efa1ffd4
commit 302434688d
3 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2017-08-09 Florian Weimer <fweimer@redhat.com>
[BZ #21932]
* nss/getXXbyYY_r.c (REENTRANT_NAME): Call __resolv_context_put
before early return.
2017-08-09 Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ #21780]

1
NEWS
View File

@ -10,6 +10,7 @@ Version 2.26.1
The following bugs are resolved with this release:
[21885] getaddrinfo: Release resolver context on error in gethosts
[21932] Unpaired __resolv_context_get in generic get*_r implementation
Version 2.26

View File

@ -234,6 +234,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
H_ERRNO_VAR_P))
{
case -1:
# ifdef NEED__RES
__resolv_context_put (res_ctx);
# endif
return errno;
case 1:
#ifdef NEED_H_ERRNO
@ -253,7 +256,12 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
nscd_status = NSCD_NAME (ADD_VARIABLES, resbuf, buffer, buflen, result
H_ERRNO_VAR);
if (nscd_status >= 0)
return nscd_status;
{
# ifdef NEED__RES
__resolv_context_put (res_ctx);
# endif
return nscd_status;
}
}
#endif