73 lines
2.0 KiB
Diff
73 lines
2.0 KiB
Diff
From 302434688d925134065498b4a5574f6ee6bfb9fd Mon Sep 17 00:00:00 2001
|
||
From: Florian Weimer <fweimer@redhat.com>
|
||
Date: Thu, 10 Aug 2017 09:10:36 +0200
|
||
Subject: [PATCH 06] 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)
|
||
---
|
||
ChangeLog | 6 ++++++
|
||
NEWS | 1 +
|
||
nss/getXXbyYY_r.c | 10 +++++++++-
|
||
3 files changed, 16 insertions(+), 1 deletion(-)
|
||
|
||
diff --git a/ChangeLog b/ChangeLog
|
||
index 459062cc20..3127648626 100644
|
||
--- a/ChangeLog
|
||
+++ b/ChangeLog
|
||
@@ -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]
|
||
diff --git a/NEWS b/NEWS
|
||
index 9a64579658..ec6cf34122 100644
|
||
--- a/NEWS
|
||
+++ b/NEWS
|
||
@@ -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
|
||
|
||
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
|
||
index 6c547ea1ca..bce80e05dd 100644
|
||
--- a/nss/getXXbyYY_r.c
|
||
+++ b/nss/getXXbyYY_r.c
|
||
@@ -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
|
||
|
||
|