aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2008-01-01 15:44:50 +1100
committerHerbert Xu <herbert@gondor.apana.org.au>2008-01-11 08:17:00 +1100
commit1b87887d6c232becba77835b29a424cf78442b7d (patch)
tree0580c28ba6f4bc08caa847d26d9ac3f87046f4eb /crypto
parent2a999a3abb2d3885741b09b9d05280db7e757544 (diff)
downloadkernel_samsung_aries-1b87887d6c232becba77835b29a424cf78442b7d.zip
kernel_samsung_aries-1b87887d6c232becba77835b29a424cf78442b7d.tar.gz
kernel_samsung_aries-1b87887d6c232becba77835b29a424cf78442b7d.tar.bz2
[CRYPTO] xcbc: Fix algorithm leak when block size check fails
When the underlying algorithm has a block size other than 16 we abort without freeing it. In fact, we try to return the algorithm itself as an error! This patch plugs the leak and makes it return -EINVAL instead. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/xcbc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/xcbc.c b/crypto/xcbc.c
index 789cdee..e3d9503 100644
--- a/crypto/xcbc.c
+++ b/crypto/xcbc.c
@@ -307,7 +307,8 @@ static struct crypto_instance *xcbc_alloc(struct rtattr **tb)
case 16:
break;
default:
- return ERR_PTR(PTR_ERR(alg));
+ inst = ERR_PTR(-EINVAL);
+ goto out_put_alg;
}
inst = crypto_alloc_instance("xcbc", alg);