From: Marc-André Lureau Date: Wed, 9 Nov 2016 10:28:18 +0000 (+0400) Subject: cipher: fix leak on initialization error X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d4c64800bbe1332328695a551b84ae68590c90fd;p=qemu.git cipher: fix leak on initialization error On error path, ctx may be leaked. Assign ctx earlier, and call qcrypto_cipher_free() on error. Spotted thanks to ASAN. Signed-off-by: Marc-André Lureau Signed-off-by: Daniel P. Berrange --- diff --git a/crypto/cipher-nettle.c b/crypto/cipher-nettle.c index cd094cd6a5..5798910d6c 100644 --- a/crypto/cipher-nettle.c +++ b/crypto/cipher-nettle.c @@ -254,6 +254,7 @@ QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg, cipher->mode = mode; ctx = g_new0(QCryptoCipherNettle, 1); + cipher->opaque = ctx; switch (alg) { case QCRYPTO_CIPHER_ALG_DES_RFB: @@ -384,13 +385,11 @@ QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg, } ctx->iv = g_new0(uint8_t, ctx->blocksize); - cipher->opaque = ctx; return cipher; error: - g_free(cipher); - g_free(ctx); + qcrypto_cipher_free(cipher); return NULL; }