[PATCH 05/14] qemuDomainMasterKeyCreate: Don't use VIR_DISPOSE_N on failure
Peter Krempa
pkrempa at redhat.com
Mon Feb 1 13:38:57 UTC 2021
When virRandomBytes fails we don't get any random bytes and even if we
did they don't have to be treated as secret as they weren't used in any
way.
Add a temporary variable with automatic freeing for the secret buffer
and assign it only on success.
Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
src/qemu/qemu_domain.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 0c078a9388..2c34307c82 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -562,18 +562,19 @@ int
qemuDomainMasterKeyCreate(virDomainObjPtr vm)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
+ g_autofree uint8_t *key = NULL;
/* If we don't have the capability, then do nothing. */
if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_SECRET))
return 0;
- priv->masterKey = g_new0(uint8_t, QEMU_DOMAIN_MASTER_KEY_LEN);
- priv->masterKeyLen = QEMU_DOMAIN_MASTER_KEY_LEN;
+ key = g_new0(uint8_t, QEMU_DOMAIN_MASTER_KEY_LEN);
- if (virRandomBytes(priv->masterKey, priv->masterKeyLen) < 0) {
- VIR_DISPOSE_N(priv->masterKey, priv->masterKeyLen);
+ if (virRandomBytes(key, QEMU_DOMAIN_MASTER_KEY_LEN) < 0)
return -1;
- }
+
+ priv->masterKey = g_steal_pointer(&key);
+ priv->masterKeyLen = QEMU_DOMAIN_MASTER_KEY_LEN;
return 0;
}
--
2.29.2
More information about the libvir-list
mailing list