crypto_krb5_prepare_encryption() and crypto_krb5_prepare_checksum()
free the buffer holding the freshly derived keys with plain kfree(),
leaving the key material behind in the freed slab object.

Fixes: 3936f02bf2d3 ("crypto/krb5: Implement Kerberos crypto core")
Cc: [email protected]
Signed-off-by: Jan Sebastian Götte <[email protected]>
---
 crypto/krb5/krb5_api.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/crypto/krb5/krb5_api.c b/crypto/krb5/krb5_api.c
index 03395b89cc61..b377f4f7558d 100644
--- a/crypto/krb5/krb5_api.c
+++ b/crypto/krb5/krb5_api.c
@@ -263,10 +263,10 @@ struct crypto_aead *crypto_krb5_prepare_encryption(const 
struct krb5_enctype *kr
                goto err;
        }
 
-       kfree(keys.data);
+       kfree_sensitive(keys.data);
        return ci;
 err:
-       kfree(keys.data);
+       kfree_sensitive(keys.data);
        return ERR_PTR(ret);
 }
 EXPORT_SYMBOL(crypto_krb5_prepare_encryption);
@@ -333,10 +333,10 @@ struct crypto_shash *crypto_krb5_prepare_checksum(const 
struct krb5_enctype *krb
                goto err;
        }
 
-       kfree(keys.data);
+       kfree_sensitive(keys.data);
        return ci;
 err:
-       kfree(keys.data);
+       kfree_sensitive(keys.data);
        return ERR_PTR(ret);
 }
 EXPORT_SYMBOL(crypto_krb5_prepare_checksum);
-- 
2.53.0


Reply via email to