]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virStorageEncryptionSecretCopy: Properly copy internals
authorPeter Krempa <pkrempa@redhat.com>
Thu, 19 Mar 2020 14:38:06 +0000 (15:38 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Mar 2020 08:47:16 +0000 (09:47 +0100)
virStorageEncryptionSecretPtr may have a string inside it, thus we must
copy the string too. Use virSecretLookupDefCopy to do that.

Caused by non-obvious code introduced in 756b46ddd24 and later 47e88b33b
which added a string that needed to be copied.

https://bugzilla.redhat.com/show_bug.cgi?id=1814923

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virstorageencryption.c

index 74836d4a003e471d819eac99d443e7178459df32..6765fdc23ab73b73b7752f4edd3447082261de14 100644 (file)
@@ -85,12 +85,10 @@ virStorageEncryptionFree(virStorageEncryptionPtr enc)
 static virStorageEncryptionSecretPtr
 virStorageEncryptionSecretCopy(const virStorageEncryptionSecret *src)
 {
-    virStorageEncryptionSecretPtr ret;
-
-    if (VIR_ALLOC(ret) < 0)
-        return NULL;
+    virStorageEncryptionSecretPtr ret = g_new0(virStorageEncryptionSecret, 1);
 
-    memcpy(ret, src, sizeof(*src));
+    ret->type = src->type;
+    virSecretLookupDefCopy(&ret->seclookupdef, &src->seclookupdef);
 
     return ret;
 }