aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ecryptfs/crypto.c
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2010-01-19 12:34:32 +0300
committerTyler Hicks <tyhicks@linux.vnet.ibm.com>2010-01-19 22:36:06 -0600
commitece550f51ba175c14ec3ec047815927d7386ea1f (patch)
tree759c930b24718b3feacf149a8e4759f7725ee8e5 /fs/ecryptfs/crypto.c
parent4aa25bcb7dac2d583f1557e2be2d0b598581da54 (diff)
downloadkernel_samsung_crespo-ece550f51ba175c14ec3ec047815927d7386ea1f.zip
kernel_samsung_crespo-ece550f51ba175c14ec3ec047815927d7386ea1f.tar.gz
kernel_samsung_crespo-ece550f51ba175c14ec3ec047815927d7386ea1f.tar.bz2
ecryptfs: use after free
The "full_alg_name" variable is used on a couple error paths, so we shouldn't free it until the end. Signed-off-by: Dan Carpenter <error27@gmail.com> Cc: stable@kernel.org Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
Diffstat (limited to 'fs/ecryptfs/crypto.c')
-rw-r--r--fs/ecryptfs/crypto.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index fbb6e5e..7cb0a59 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -1748,7 +1748,7 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm,
char *cipher_name, size_t *key_size)
{
char dummy_key[ECRYPTFS_MAX_KEY_BYTES];
- char *full_alg_name;
+ char *full_alg_name = NULL;
int rc;
*key_tfm = NULL;
@@ -1763,7 +1763,6 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm,
if (rc)
goto out;
*key_tfm = crypto_alloc_blkcipher(full_alg_name, 0, CRYPTO_ALG_ASYNC);
- kfree(full_alg_name);
if (IS_ERR(*key_tfm)) {
rc = PTR_ERR(*key_tfm);
printk(KERN_ERR "Unable to allocate crypto cipher with name "
@@ -1786,6 +1785,7 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm,
goto out;
}
out:
+ kfree(full_alg_name);
return rc;
}