[libvirt] [PATCH 07/22] util: typedparam: Optionally copy strings passed to virTypedParameterAssignValue

Peter Krempa posted 22 patches 6 years, 4 months ago
[libvirt] [PATCH 07/22] util: typedparam: Optionally copy strings passed to virTypedParameterAssignValue
Posted by Peter Krempa 6 years, 4 months ago
Some code paths pass in already pointers to strings which should be
added directly as the value of the typed parameter. To allow more
universal use of virTypedParameterAssignValue add a flag which allows to
copy the value in place.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/util/virtypedparam.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
index 9f86166707..720b88dd10 100644
--- a/src/util/virtypedparam.c
+++ b/src/util/virtypedparam.c
@@ -209,7 +209,8 @@ virTypedParameterToString(virTypedParameterPtr param)
 static int
 virTypedParameterAssignValueAP(virTypedParameterPtr param,
                                int type,
-                               va_list ap)
+                               va_list ap,
+                               bool copystr)
 {
     param->type = type;
     switch (type) {
@@ -232,7 +233,13 @@ virTypedParameterAssignValueAP(virTypedParameterPtr param,
         param->value.b = !!va_arg(ap, int);
         break;
     case VIR_TYPED_PARAM_STRING:
-        param->value.s = va_arg(ap, char *);
+        if (copystr) {
+            if (VIR_STRDUP(param->value.s, va_arg(ap, char *)) < 0)
+                return -1;
+        } else {
+            param->value.s = va_arg(ap, char *);
+        }
+
         if (!param->value.s && VIR_STRDUP(param->value.s, "") < 0)
             return -1;
         break;
@@ -265,7 +272,7 @@ virTypedParameterAssign(virTypedParameterPtr param, const char *name,
     }

     va_start(ap, type);
-    ret = virTypedParameterAssignValueAP(param, type, ap);
+    ret = virTypedParameterAssignValueAP(param, type, ap, false);
     va_end(ap);

     return ret;
-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 07/22] util: typedparam: Optionally copy strings passed to virTypedParameterAssignValue
Posted by Ján Tomko 6 years, 4 months ago
On Thu, Sep 19, 2019 at 07:13:10PM +0200, Peter Krempa wrote:
>Some code paths pass in already pointers to strings which should be

already pass in

>added directly as the value of the typed parameter. To allow more
>universal use of virTypedParameterAssignValue add a flag which allows to
>copy the value in place.
>
>Signed-off-by: Peter Krempa <pkrempa@redhat.com>
>---
> src/util/virtypedparam.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list