[29296] in CVS-changelog-for-Kerberos-V5

home help back first fref pref prev next nref lref last post

krb5 commit: Use DB allocators for default key data encryption

daemon@ATHENA.MIT.EDU (Greg Hudson)
Fri Feb 19 15:47:04 2016

Date: Fri, 19 Feb 2016 15:46:56 -0500
From: Greg Hudson <ghudson@mit.edu>
Message-Id: <201602192046.u1JKkut9021447@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu

https://github.com/krb5/krb5/commit/2e9f19882c1e127fd7d9b09f9d6c3331ee638bfd
commit 2e9f19882c1e127fd7d9b09f9d6c3331ee638bfd
Author: Simo Sorce <simo@redhat.com>
Date:   Wed Dec 16 13:19:27 2015 -0500

    Use DB allocators for default key data encryption
    
    krb5_dbe_def_encrypt_key_data() is used by KDB modules as the default
    encryption functions.  It deals with structures allocated or freed by
    the KDB module, so it needs to use the module's memory allocation
    functions.

 src/lib/kdb/encrypt_key.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/lib/kdb/encrypt_key.c b/src/lib/kdb/encrypt_key.c
index 2ca4632..dafe612 100644
--- a/src/lib/kdb/encrypt_key.c
+++ b/src/lib/kdb/encrypt_key.c
@@ -73,9 +73,10 @@ krb5_dbe_def_encrypt_key_data( krb5_context             context,
     krb5_data                     plain;
     krb5_enc_data                 cipher;
 
-    for (i = 0; i < key_data->key_data_ver; i++)
-        if (key_data->key_data_contents[i])
-            free(key_data->key_data_contents[i]);
+    for (i = 0; i < key_data->key_data_ver; i++) {
+        krb5_db_free(context, key_data->key_data_contents[i]);
+        key_data->key_data_contents[i] = NULL;
+    }
 
     key_data->key_data_ver = 1;
     key_data->key_data_kvno = keyver;
@@ -88,7 +89,8 @@ krb5_dbe_def_encrypt_key_data( krb5_context             context,
                                         &len)))
         return(retval);
 
-    if ((ptr = (krb5_octet *) malloc(2 + len)) == NULL)
+    ptr = krb5_db_alloc(context, NULL, 2 + len);
+    if (ptr == NULL)
         return(ENOMEM);
 
     key_data->key_data_type[0] = dbkey->enctype;
@@ -106,7 +108,7 @@ krb5_dbe_def_encrypt_key_data( krb5_context             context,
 
     if ((retval = krb5_c_encrypt(context, mkey, /* XXX */ 0, 0,
                                  &plain, &cipher))) {
-        free(key_data->key_data_contents[0]);
+        krb5_db_free(context, key_data->key_data_contents[0]);
         return retval;
     }
 
@@ -117,9 +119,9 @@ krb5_dbe_def_encrypt_key_data( krb5_context             context,
             key_data->key_data_type[1] = keysalt->type;
             if ((key_data->key_data_length[1] = keysalt->data.length) != 0) {
                 key_data->key_data_contents[1] =
-                    (krb5_octet *)malloc(keysalt->data.length);
+                    krb5_db_alloc(context, NULL, keysalt->data.length);
                 if (key_data->key_data_contents[1] == NULL) {
-                    free(key_data->key_data_contents[0]);
+                    krb5_db_free(context, key_data->key_data_contents[0]);
                     return ENOMEM;
                 }
                 memcpy(key_data->key_data_contents[1], keysalt->data.data,
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5

home help back first fref pref prev next nref lref last post