All of lore.kernel.org
 help / color / mirror / Atom feed
From: longpeng.mike@gmail.com
To: berrange@redhat.com
Cc: qemu-devel@nongnu.org, arei.gonglei@huawei.com,
	weidong.huang@huawei.com, "Longpeng(Mike)" <longpeng2@huawei.com>
Subject: [Qemu-devel] [PATCH v5 08/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for gcrypt-backend
Date: Fri, 14 Jul 2017 07:38:30 -0400	[thread overview]
Message-ID: <1500032321-13951-9-git-send-email-longpeng.mike@gmail.com> (raw)
In-Reply-To: <1500032321-13951-1-git-send-email-longpeng.mike@gmail.com>

From: "Longpeng(Mike)" <longpeng2@huawei.com>

1) Fix a handle-leak problem in qcrypto_hmac_new(), didn't free
   ctx->handle if gcry_mac_setkey fails.

2) Extracts qcrypto_hmac_ctx_new() from qcrypto_hmac_new() for
   gcrypt-backend impls.

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Gonglei <arei.gonglei@huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
---
 crypto/hmac-gcrypt.c | 35 +++++++++++++++++++++++++----------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/crypto/hmac-gcrypt.c b/crypto/hmac-gcrypt.c
index 21189e6..372ad7f 100644
--- a/crypto/hmac-gcrypt.c
+++ b/crypto/hmac-gcrypt.c
@@ -42,11 +42,11 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)
     return false;
 }
 
-QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
-                              const uint8_t *key, size_t nkey,
-                              Error **errp)
+static QCryptoHmacGcrypt *
+qcrypto_hmac_ctx_new(QCryptoHashAlgorithm alg,
+                     const uint8_t *key, size_t nkey,
+                     Error **errp)
 {
-    QCryptoHmac *hmac;
     QCryptoHmacGcrypt *ctx;
     gcry_error_t err;
 
@@ -56,9 +56,6 @@ QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
         return NULL;
     }
 
-    hmac = g_new0(QCryptoHmac, 1);
-    hmac->alg = alg;
-
     ctx = g_new0(QCryptoHmacGcrypt, 1);
 
     err = gcry_mac_open(&ctx->handle, qcrypto_hmac_alg_map[alg],
@@ -73,15 +70,14 @@ QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
     if (err != 0) {
         error_setg(errp, "Cannot set key: %s",
                    gcry_strerror(err));
+        gcry_mac_close(ctx->handle);
         goto error;
     }
 
-    hmac->opaque = ctx;
-    return hmac;
+    return ctx;
 
 error:
     g_free(ctx);
-    g_free(hmac);
     return NULL;
 }
 
@@ -150,3 +146,22 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
 
     return 0;
 }
+
+QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
+                              const uint8_t *key, size_t nkey,
+                              Error **errp)
+{
+    QCryptoHmac *hmac;
+    QCryptoHmacGcrypt *ctx;
+
+    ctx = qcrypto_hmac_ctx_new(alg, key, nkey, errp);
+    if (!ctx) {
+        return NULL;
+    }
+
+    hmac = g_new0(QCryptoHmac, 1);
+    hmac->alg = alg;
+    hmac->opaque = ctx;
+
+    return hmac;
+}
-- 
1.8.3.1

  parent reply	other threads:[~2017-07-14 11:38 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-14 11:38 [Qemu-devel] [PATCH v5 00/18] crypto: add afalg-backend support longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 01/18] crypto: cipher: introduce context free function longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 02/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for gcrypt-backend longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 03/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for nettle-backend longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 04/18] crypto: cipher: introduce qcrypto_cipher_ctx_new for builtin-backend longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 05/18] crypto: cipher: add cipher driver framework longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 06/18] crypto: hash: add hash " longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 07/18] crypto: hmac: move crypto/hmac.h into include/crypto/ longpeng.mike
2017-07-14 11:38 ` longpeng.mike [this message]
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 09/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for nettle-backend longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 10/18] crypto: hmac: introduce qcrypto_hmac_ctx_new for glib-backend longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 11/18] crypto: hmac: add hmac driver framework longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 12/18] crypto: introduce some common functions for af_alg backend longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 13/18] crypto: cipher: add afalg-backend cipher support longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 14/18] crypto: hash: add afalg-backend hash support longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 15/18] crypto: hmac: add af_alg-backend hmac support longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 16/18] tests: crypto: add cipher speed benchmark support longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 17/18] tests: crypto: add hash " longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 18/18] tests: crypto: add hmac " longpeng.mike
2017-07-14 11:38 ` [Qemu-devel] [PATCH v5 00/18] crypto: add afalg-backend support longpeng.mike
2017-07-14 13:04 ` Daniel P. Berrange
2017-07-14 16:44   ` Longpeng(Mike)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1500032321-13951-9-git-send-email-longpeng.mike@gmail.com \
    --to=longpeng.mike@gmail.com \
    --cc=arei.gonglei@huawei.com \
    --cc=berrange@redhat.com \
    --cc=longpeng2@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=weidong.huang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.