[PATCH v2 03/27] qemuDomainMasterKeyCreate: Don't use VIR_DISPOSE_N on failure

Peter Krempa posted 27 patches 5 years ago
[PATCH v2 03/27] qemuDomainMasterKeyCreate: Don't use VIR_DISPOSE_N on failure
Posted by Peter Krempa 5 years ago
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@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

Re: [PATCH v2 03/27] qemuDomainMasterKeyCreate: Don't use VIR_DISPOSE_N on failure
Posted by Daniel P. Berrangé 5 years ago
On Tue, Feb 02, 2021 at 05:55:40PM +0100, Peter Krempa wrote:
> 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@redhat.com>
> ---
>  src/qemu/qemu_domain.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|