On Thu, Jan 22, 2026 at 08:24:56PM -0300, Fabiano Rosas wrote:
> Fix a couple of leaks detected by Coverity. Both are currently
> harmless because the visitor in the setter can never fail and the
> whole of the getter is unused, it's only purpose at the moment is to
> provide a complete implementation of the StrOrNull property.
> 
> Fixes: CID 1643919
> Fixes: CID 1643920
> Reported-by: Peter Maydell <[email protected]>
> Signed-off-by: Fabiano Rosas <[email protected]>
> ---
> CI run: https://gitlab.com/farosas/qemu/-/pipelines/2280325023
> ---
>  migration/options.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/migration/options.c b/migration/options.c
> index 9a5a39c886..9dc44a3736 100644
> --- a/migration/options.c
> +++ b/migration/options.c
> @@ -225,6 +225,7 @@ static void get_StrOrNull(Object *obj, Visitor *v, const 
> char *name,
>          str_or_null = g_new0(StrOrNull, 1);
>          str_or_null->type = QTYPE_QSTRING;
>          str_or_null->u.s = g_strdup("");
> +        *ptr = str_or_null;

Yep, fixes the leak.

However does it then mean a get() can internally update this Property?  It
used to be NULL, now it's QTYPE_STRING "".

It may make slightly more sense to me to have zero side effect on a get()
call. Say, keeping *ptr==NULL after get() returns (as before), while we can
use a temp string ("") for the visitor.

I randomly checked another get() provider, e.g. get_drive() does that.
Should we follow?

>      } else {
>          /* the setter doesn't allow QNULL */
>          assert(str_or_null->type != QTYPE_QNULL);
> @@ -245,6 +246,7 @@ static void set_StrOrNull(Object *obj, Visitor *v, const 
> char *name,
>       */
>      str_or_null->type = QTYPE_QSTRING;
>      if (!visit_type_str(v, name, &str_or_null->u.s, errp)) {
> +        qapi_free_StrOrNull(str_or_null);

This looks correct.  Or, simpler way is we only do g_new0() after the
visit_type_str() successfully returned (and pass a temp char* into it).

>          return;
>      }
>  
> -- 
> 2.51.0
> 

-- 
Peter Xu


Reply via email to