summaryrefslogtreecommitdiff
path: root/crypto/dh.c
diff options
context:
space:
mode:
authorTudor-Dan Ambarus <tudor.ambarus@microchip.com>2017-05-25 10:18:07 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2017-06-10 12:04:26 +0800
commit8d5ffb267073e7aa5f3ae4c5d9a7543484ded885 (patch)
treeb83a0955f79482b15bbe4dcccfaefd3daef7b9ee /crypto/dh.c
parent87d53a5643d67a581cecf84e936637864774314f (diff)
downloadlinux-crypto-8d5ffb267073e7aa5f3ae4c5d9a7543484ded885.tar.gz
linux-crypto-8d5ffb267073e7aa5f3ae4c5d9a7543484ded885.zip
crypto: dh - fix memleak in setkey
setkey can be called multiple times during the existence of the transformation object. In case of multiple setkey calls, the old key was not freed and we leaked memory. Free the old MPI key if any. Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--crypto/dh.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/crypto/dh.c b/crypto/dh.c
index 7cec0498..e151f127 100644
--- a/crypto/dh.c
+++ b/crypto/dh.c
@@ -85,6 +85,9 @@ static int dh_set_secret(struct crypto_kpp *tfm, const void *buf,
struct dh_ctx *ctx = dh_get_ctx(tfm);
struct dh params;
+ /* Free the old MPI key if any */
+ dh_free_ctx(ctx);
+
if (crypto_dh_decode_key(buf, len, &params) < 0)
return -EINVAL;