(__nscd_getai): Avoid memory and file descriptor leaks.
authordrepper <drepper>
Mon, 22 Nov 2004 18:41:05 +0000 (18:41 +0000)
committerdrepper <drepper>
Mon, 22 Nov 2004 18:41:05 +0000 (18:41 +0000)
nscd/nscd_getai.c

index f0b2082..24b374b 100644 (file)
@@ -104,7 +104,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
       if (resultbuf == NULL)
        {
          *h_errnop = NETDB_INTERNAL;
-         return -1;
+         goto out_close;
        }
 
       /* Set up the data structure, including pointers.  */
@@ -140,7 +140,10 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
          if (resultbuf->canon != NULL
              && resultbuf->canon[ai_resp->canonlen - 1] != '\0')
            /* We cannot use the database.  */
-           goto out_close;
+           {
+             free (resultbuf);
+             goto out_close;
+           }
 
          retval = 0;
          *result = resultbuf;
@@ -173,6 +176,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
          mapped = NO_MAPPING;
        }
 
+      *result = NULL;
       free (resultbuf);
 
       goto retry;