aboutsummaryrefslogtreecommitdiff
path: root/crypto/block.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2019-08-22 17:57:09 +0100
committerPeter Maydell <peter.maydell@linaro.org>2019-08-22 17:57:09 +0100
commit3590b27c7a2be7a24b4b265e2e9458b3761103e1 (patch)
treec4f94fe22dc14be0929494f0c9688ab4a84c65fd /crypto/block.c
parentd013d220c710054a6d755941460f88c186fef7b5 (diff)
parent57b9f113fce2a2231a47e9295c1d461e9ff7f0f7 (diff)
downloadqemu-3590b27c7a2be7a24b4b265e2e9458b3761103e1.zip
qemu-3590b27c7a2be7a24b4b265e2e9458b3761103e1.tar.gz
qemu-3590b27c7a2be7a24b4b265e2e9458b3761103e1.tar.bz2
Merge remote-tracking branch 'remotes/berrange/tags/autofree-pull-request' into staging
require newer glib2 to enable autofree'ing of stack variables exiting scope * Bump minium glib2 version to 2.48 * Convert much of the crypto code to use automatic memory free functions # gpg: Signature made Thu 22 Aug 2019 11:51:59 BST # gpg: using RSA key DAF3A6FDB26B62912D0E8E3FBE86EBB415104FDF # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>" [full] # gpg: aka "Daniel P. Berrange <berrange@redhat.com>" [full] # Primary key fingerprint: DAF3 A6FD B26B 6291 2D0E 8E3F BE86 EBB4 1510 4FDF * remotes/berrange/tags/autofree-pull-request: crypto: use auto cleanup for many stack variables crypto: define cleanup functions for use with g_autoptr glib: bump min required glib library version to 2.48 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'crypto/block.c')
-rw-r--r--crypto/block.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/crypto/block.c b/crypto/block.c
index ee96759..3257528 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;
}