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

Message ID 20170809152334.71E2D40164AE0@oldenburg.str.redhat.com
State Committed
Headers

Commit Message

Florian Weimer Aug. 9, 2017, 3:23 p.m. UTC
  This corrects an oversight introduce in commit
352f4ff9a268b81ef5d4b2413f582565806e4790 (resolv: Introduce struct
resolv_context).

2017-08-09  Florian Weimer  <fweimer@redhat.com>

	* nss/getXXbyYY_r.c (REENTRANT_NAME): Call __resolv_context_put
	before early return.
  

Comments

Andreas Schwab Aug. 9, 2017, 3:41 p.m. UTC | #1
On Aug 09 2017, fweimer@redhat.com (Florian Weimer) wrote:

> 	* nss/getXXbyYY_r.c (REENTRANT_NAME): Call __resolv_context_put
> 	before early return.

Ok.  Please add the BZ reference.

Andreas.
  

Patch

diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index 6c547ea..bce80e0 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