diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2019-07-23 16:22:36 +0100 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2019-08-22 10:56:57 +0100 |
commit | 57b9f113fce2a2231a47e9295c1d461e9ff7f0f7 (patch) | |
tree | 5916f14bbe28782fe1da06544bfe9e58f6867e4d /crypto/block.c | |
parent | 133cf1e5b1a9a3cc6f1e47e5edad67d000259dd6 (diff) |
crypto: use auto cleanup for many stack variables
Simplify cleanup paths by using glib's auto cleanup macros for stack
variables, allowing several goto jumps / labels to be eliminated.
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'crypto/block.c')
-rw-r--r-- | crypto/block.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/crypto/block.c b/crypto/block.c index ee96759f7d..325752871c 100644 --- a/crypto/block.c +++ b/crypto/block.c @@ -299,15 +299,13 @@ static int do_qcrypto_block_cipher_encdec(QCryptoCipher *cipher, QCryptoCipherEncDecFunc func, Error **errp) { - uint8_t *iv; + g_autofree uint8_t *iv = niv ? g_new0(uint8_t, niv) : NULL; int ret = -1; uint64_t startsector = offset / sectorsize; assert(QEMU_IS_ALIGNED(offset, sectorsize)); assert(QEMU_IS_ALIGNED(len, sectorsize)); - iv = niv ? g_new0(uint8_t, niv) : NULL; - while (len > 0) { size_t nbytes; if (niv) { @@ -320,19 +318,19 @@ static int do_qcrypto_block_cipher_encdec(QCryptoCipher *cipher, } if (ret < 0) { - goto cleanup; + return -1; } if (qcrypto_cipher_setiv(cipher, iv, niv, errp) < 0) { - goto cleanup; + return -1; } } nbytes = len > sectorsize ? sectorsize : len; if (func(cipher, buf, buf, nbytes, errp) < 0) { - goto cleanup; + return -1; } startsector++; @@ -340,10 +338,7 @@ static int do_qcrypto_block_cipher_encdec(QCryptoCipher *cipher, len -= nbytes; } - ret = 0; - cleanup: - g_free(iv); - return ret; + return 0; } |