g_variant_builder_add() creates a new GVariant using g_variant_new() and
then adds it to the builder. Passing a GVariant probably adds the
pointer to the array, not the value. I think an alternative fix would
be to use "@u" as type string for the g_variant_builder_add() call, then
the already allocated GVariant is adopted.
Fixes: 9a71b7219ca3 ("charon-nm: Port to libnm")
enumerator = handler->create_enumerator(handler, type);
while (enumerator->enumerate(enumerator, &chunk))
{
- g_variant_builder_add (&builder, "u",
- g_variant_new_uint32 (*(uint32_t*)chunk.ptr));
+ g_variant_builder_add (&builder, "u", *(uint32_t*)chunk.ptr);
}
enumerator->destroy(enumerator);