]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2751. [bug] Fixed a memory leak in dnssec-keyfromlabel. [RT #20588]
authorEvan Hunt <each@isc.org>
Fri, 6 Nov 2009 01:06:38 +0000 (01:06 +0000)
committerEvan Hunt <each@isc.org>
Fri, 6 Nov 2009 01:06:38 +0000 (01:06 +0000)
CHANGES
bin/dnssec/dnssec-keyfromlabel.c

diff --git a/CHANGES b/CHANGES
index 814b9f8cc1c8916a69e9408973a7f13a274c1496..8ab0d22d8971798eb43223028372bdccd342487e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+2751.  [bug]           Fixed a memory leak in dnssec-keyfromlabel. [RT #20588]
+
 2750.  [bug]           dig: assertion failure could occur when a server
                        didn't have an address. [RT #20579]
 
index ed88a374455f88afa98ec98271b6f9ae3e04aeac..44207790edcc6618fe16e02bbdbec04f376bef7d 100644 (file)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dnssec-keyfromlabel.c,v 1.25 2009/10/27 18:56:48 each Exp $ */
+/* $Id: dnssec-keyfromlabel.c,v 1.26 2009/11/06 01:06:38 each Exp $ */
 
 /*! \file */
 
@@ -197,7 +197,7 @@ main(int argc, char **argv) {
                        options |= DST_TYPE_KEY;
                        break;
                case 'l':
-                       label = isc_commandline_argument;
+                       label = isc_mem_strdup(mctx, isc_commandline_argument);
                        break;
                case 'n':
                        nametype = isc_commandline_argument;
@@ -320,8 +320,11 @@ main(int argc, char **argv) {
                int len;
 
                len = strlen(label) + strlen(engine) + 2;
-               l = isc_mem_get(mctx, len);
+               l = isc_mem_allocate(mctx, len);
+               if (l == NULL)
+                       fatal("cannot allocate memory");
                snprintf(l, len, "%s:%s", engine, label);
+               isc_mem_free(mctx, label);
                label = l;
        }
 
@@ -525,6 +528,7 @@ main(int argc, char **argv) {
        dns_name_destroy();
        if (verbose > 10)
                isc_mem_stats(mctx, stdout);
+       isc_mem_free(mctx, label);
        isc_mem_destroy(&mctx);
 
        return (0);