libotutil: avoid leaking builder memory on error
authorLuca BRUNO <luca.bruno@coreos.com>
Mon, 10 Jan 2022 09:30:11 +0000 (09:30 +0000)
committerLuca BRUNO <luca.bruno@coreos.com>
Mon, 10 Jan 2022 09:30:11 +0000 (09:30 +0000)
This swaps the order of a couple of input sanity checks, in order
to fix a minor memory leak due to an early-return on the error
path.
Memory for the result is now allocated only after input has been
sanity-checked.
It fixes a static analysis warning highlighted by Coverity.

src/libotutil/ot-variant-builder.c

index 92ac8edea1bb0bc794fa19b4dc7b6a5ddfb31546..754b932337974e04c637ed308eca9298bd562bb5 100644 (file)
@@ -760,10 +760,10 @@ ot_variant_builder_info_new (OtVariantBuilder *builder, const GVariantType *type
 {
   OtVariantBuilderInfo *info;
 
-  info = (OtVariantBuilderInfo *) g_slice_new0 (OtVariantBuilderInfo);
-
   g_return_val_if_fail (g_variant_type_is_container (type), NULL);
 
+  info = (OtVariantBuilderInfo *) g_slice_new0 (OtVariantBuilderInfo);
+
   info->builder = builder;
   info->type = g_variant_type_copy (type);
   info->type_info = g_variant_type_info_get (type);
@@ -845,10 +845,10 @@ ot_variant_builder_new (const GVariantType *type,
 {
   OtVariantBuilder *builder;
 
-  builder = (OtVariantBuilder *) g_slice_new0 (OtVariantBuilder);
-
   g_return_val_if_fail (g_variant_type_is_container (type), NULL);
 
+  builder = (OtVariantBuilder *) g_slice_new0 (OtVariantBuilder);
+
   builder->head = ot_variant_builder_info_new (builder, type);
   builder->ref_count = 1;
   builder->fd = fd;