]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3226. [bug] Address minor resource leakages. [RT #26624]
authorMark Andrews <marka@isc.org>
Wed, 30 Nov 2011 00:48:51 +0000 (00:48 +0000)
committerMark Andrews <marka@isc.org>
Wed, 30 Nov 2011 00:48:51 +0000 (00:48 +0000)
CHANGES
bin/dig/dighost.c
bin/dnssec/dnssec-keyfromlabel.c
bin/dnssec/dnssec-keygen.c
bin/tests/dst/gsstest.c
bin/tests/system/dlzexternal/driver.c
contrib/nslint-2.1a3/nslint.c
contrib/sdb/ldap/zone2ldap.c

diff --git a/CHANGES b/CHANGES
index e21134250f8bc58908f69d29ba36df4c88e644ff..9c74fa47de07e554ce622b6cf7dc11d014fdf47d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+3226.  [bug]           Address minor resource leakages. [RT #26624]
+
 3225.  [bug]           Silence spurious "setsockopt(517, IPV6_V6ONLY) failed"
                        messages. [RT #26507]
 
index 62f2af263e96fb82004caf7e0a1ad1fd1c3c2583..4892603d9b2adebcd12785f67b88ba487bde43ad 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dighost.c,v 1.342 2011/11/06 23:18:07 marka Exp $ */
+/* $Id: dighost.c,v 1.343 2011/11/30 00:48:51 marka Exp $ */
 
 /*! \file
  *  \note
@@ -4212,7 +4212,6 @@ opentmpkey(isc_mem_t *mctx, const char *file, char **tempp, FILE **fp) {
        return (result);
 }
 
-
 isc_result_t
 get_trusted_key(isc_mem_t *mctx)
 {
@@ -4274,6 +4273,7 @@ get_trusted_key(isc_mem_t *mctx)
                if (key != NULL)
                        dst_key_free(&key);
        }
+       fclose(fp);
        return (ISC_R_SUCCESS);
 }
 
index 51eac501aab060793ef484828b110a5bdf78f127..f5560173ccd7d0a750228fa8e27175fed0ccfb11 100644 (file)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dnssec-keyfromlabel.c,v 1.37 2011/10/20 21:20:01 marka Exp $ */
+/* $Id: dnssec-keyfromlabel.c,v 1.38 2011/11/30 00:48:51 marka Exp $ */
 
 /*! \file */
 
@@ -111,7 +111,8 @@ usage(void) {
 
 int
 main(int argc, char **argv) {
-       char            *algname = NULL, *nametype = NULL, *type = NULL;
+       char            *algname = NULL, *freeit = NULL;
+       char            *nametype = NULL, *type = NULL;
        const char      *directory = NULL;
 #ifdef USE_PKCS11
        const char      *engine = "pkcs11";
@@ -351,6 +352,9 @@ main(int argc, char **argv) {
                        algname = strdup(DEFAULT_NSEC3_ALGORITHM);
                else
                        algname = strdup(DEFAULT_ALGORITHM);
+               if (algname == NULL)
+                       fatal("strdup failed");
+               freeit = algname;
                if (verbose > 0)
                        fprintf(stderr, "no algorithm specified; "
                                "defaulting to %s\n", algname);
@@ -572,5 +576,8 @@ main(int argc, char **argv) {
        isc_mem_free(mctx, label);
        isc_mem_destroy(&mctx);
 
+       if (freeit != NULL)
+               free(freeit);
+
        return (0);
 }
index 1f39d2181b90821c17d6770da3a5f2cb011d7b31..b59047e3f239d9b69ffaa99899cbf6b74f0e2d9d 100644 (file)
@@ -29,7 +29,7 @@
  * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dnssec-keygen.c,v 1.119 2011/10/20 21:20:01 marka Exp $ */
+/* $Id: dnssec-keygen.c,v 1.120 2011/11/30 00:48:51 marka Exp $ */
 
 /*! \file */
 
@@ -197,7 +197,8 @@ progress(int p)
 
 int
 main(int argc, char **argv) {
-       char            *algname = NULL, *nametype = NULL, *type = NULL;
+       char            *algname = NULL, *freeit = NULL;
+       char            *nametype = NULL, *type = NULL;
        char            *classname = NULL;
        char            *endp;
        dst_key_t       *key = NULL;
@@ -517,6 +518,9 @@ main(int argc, char **argv) {
                                algname = strdup(DEFAULT_NSEC3_ALGORITHM);
                        else
                                algname = strdup(DEFAULT_ALGORITHM);
+                       if (algname == NULL)
+                               fatal("strdup failed");
+                       freeit = algname;
                        if (verbose > 0)
                                fprintf(stderr, "no algorithm specified; "
                                                "defaulting to %s\n", algname);
@@ -1031,5 +1035,8 @@ main(int argc, char **argv) {
                isc_mem_stats(mctx, stdout);
        isc_mem_destroy(&mctx);
 
+       if (freeit != NULL)
+               free(freeit);
+
        return (0);
 }
index bb31d5d1c604be3ca2e3a836cb9f4a0fcbf57fde..c1296f7a1333748b57da79663ac778626ad6187e 100755 (executable)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: gsstest.c,v 1.18 2011/09/05 17:39:37 each Exp $ */
+/* $Id: gsstest.c,v 1.19 2011/11/30 00:48:51 marka Exp $ */
 
 #include <config.h>
 
@@ -135,7 +135,7 @@ static void
 recvresponse(isc_task_t *task, isc_event_t *event) {
        dns_requestevent_t *reqev = (dns_requestevent_t *)event;
        isc_result_t result, result2;
-       dns_message_t *query, *response = NULL;
+       dns_message_t *query = NULL, *response = NULL;
        isc_buffer_t outtoken;
        isc_buffer_t outbuf;
        char output[10 * 1024];
@@ -172,14 +172,14 @@ recvresponse(isc_task_t *task, isc_event_t *event) {
 
        CHECK("dns_request_getresponse", result2);
 
-       if (response)
+       if (response != NULL)
                dns_message_destroy(&response);
 
  end:
-       if (query)
+       if (query != NULL)
                dns_message_destroy(&query);
 
-       if (reqev->request)
+       if (reqev->request != NULL)
                dns_request_destroy(&reqev->request);
 
        isc_event_free(&event);
@@ -272,7 +272,7 @@ static void
 initctx2(isc_task_t *task, isc_event_t *event) {
        dns_requestevent_t *reqev = (dns_requestevent_t *)event;
        isc_result_t result;
-       dns_message_t *query, *response = NULL;
+       dns_message_t *query = NULL, *response = NULL;
        isc_buffer_t outtoken;
        unsigned char array[DNS_NAME_MAXTEXT + 1];
        dns_rdataset_t *rdataset;
@@ -331,14 +331,13 @@ initctx2(isc_task_t *task, isc_event_t *event) {
                tsigkey = NULL;
        }
 
-       if (response)
-               dns_message_destroy(&response);
+       dns_message_destroy(&response);
 
  end:
-       if (query)
+       if (query != NULL)
                dns_message_destroy(&query);
 
-       if (reqev->request)
+       if (reqev->request != NULL)
                dns_request_destroy(&reqev->request);
 
        isc_event_free(&event);
index b0eb8c22bd635eecbc0fafd91f23150f7296503e..bbc9b5fe2175d31677c105838443770bc290745c 100644 (file)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: driver.c,v 1.8 2011/10/11 13:36:12 marka Exp $ */
+/* $Id: driver.c,v 1.9 2011/11/30 00:48:51 marka Exp $ */
 
 /*
  * This provides a very simple example of an external loadable DLZ
@@ -236,6 +236,7 @@ dlz_create(const char *dlzname, unsigned int argc, char *argv[],
        if (argc < 2) {
                state->log(ISC_LOG_ERROR,
                           "dlz_example: please specify a zone name");
+               dlz_destroy(state);
                return (ISC_R_FAILURE);
        }
 
@@ -521,13 +522,16 @@ static isc_result_t
 modrdataset(struct dlz_example_data *state, const char *name,
            const char *rdatastr, struct record *list)
 {
-       char *full_name, *dclass, *type, *data, *ttlstr;
-       char *buf = strdup(rdatastr);
+       char *full_name, *dclass, *type, *data, *ttlstr, *buf;
        isc_result_t result;
 #if defined(WIN32) || defined(_REENTRANT)
        char *saveptr = NULL;
 #endif
 
+       buf = strdup(rdatastr);
+       if (buf == NULL)
+               return (ISC_R_FAILURE);
+
        /*
         * The format is:
         * FULLNAME\tTTL\tDCLASS\tTYPE\tDATA
@@ -538,28 +542,32 @@ modrdataset(struct dlz_example_data *state, const char *name,
 
        full_name = STRTOK_R(buf, "\t", &saveptr);
        if (full_name == NULL)
-               return (ISC_R_FAILURE);
+               goto error;
 
        ttlstr = STRTOK_R(NULL, "\t", &saveptr);
        if (ttlstr == NULL)
-               return (ISC_R_FAILURE);
+               goto error;
 
        dclass = STRTOK_R(NULL, "\t", &saveptr);
        if (dclass == NULL)
-               return (ISC_R_FAILURE);
+               goto error;
 
        type = STRTOK_R(NULL, "\t", &saveptr);
        if (type == NULL)
-               return (ISC_R_FAILURE);
+               goto error;
 
        data = STRTOK_R(NULL, "\t", &saveptr);
        if (data == NULL)
-               return (ISC_R_FAILURE);
+               goto error;
 
        result = add_name(state, list, name, type,
                          strtoul(ttlstr, NULL, 10), data);
        free(buf);
        return (result);
+
+ error:
+       free(buf);
+       return (ISC_R_FAILURE);
 }
 
 
index 8ce95050e4093f6d3e9a1bfedfa440812017e3d5..4d9eeb8e1ef7000db8cdc35e7d2de0546299e496 100644 (file)
@@ -23,7 +23,7 @@ static const char copyright[] =
     "@(#) Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001\n\
 The Regents of the University of California.  All rights reserved.\n";
 static const char rcsid[] =
-    "@(#) $Id: nslint.c,v 1.1 2001/12/21 04:12:04 marka Exp $ (LBL)";
+    "@(#) $Id: nslint.c,v 1.2 2011/11/30 00:48:51 marka Exp $ (LBL)";
 #endif
 /*
  * nslint - perform consistency checks on dns files
@@ -1059,6 +1059,7 @@ process(register const char *file, register const char *domain,
                ++errors;
                fprintf(stderr, "%s: %s/%s:%d bad in-addr.arpa domain\n",
                    prog, cwd, file, n);
+               fclose(f);
                return;
        }
 
index e06f4f9578687134f59ce63c29b4d0f9eb2b0814..6db7f85a46d40f87d5854b46c2e9367e06931cf4 100644 (file)
@@ -328,6 +328,8 @@ main (int *argc, char **argv)
   isc_hash_destroy();
   isc_entropy_detach(&ectx);
   isc_mem_destroy(&mctx);
+  if (zonefile)
+       free(zonefile);
 
   return 0;
 }