]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pack-bitmap-write.c: avoid uninitialized 'write_as' field
authorTaylor Blau <me@ttaylorr.com>
Tue, 14 May 2024 19:57:03 +0000 (15:57 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 May 2024 13:52:32 +0000 (06:52 -0700)
Prepare to free() memory associated with bitmapped_commit structs by
zero'ing the 'write_as' field.

In ideal cases, it is fine to do something like:

    for (i = 0; i < writer->selected_nr; i++) {
        struct bitmapped_commit *bc = &writer->selected[i];
        if (bc->write_as != bc->bitmap)
            ewah_free(bc->write_as);
        ewah_free(bc->bitmap);
    }

but if not all of the 'write_as' fields were populated (e.g., because
the packing_data given does not form a reachability closure), then we
may attempt to free uninitialized memory.

Guard against this by preemptively zero'ing this field just in case.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pack-bitmap-write.c

index c0087dab12a336fe85180788a0862ef6f518e051..420f17c2e00b21603901966eda6e0a9c490901b8 100644 (file)
@@ -112,6 +112,7 @@ static inline void push_bitmapped_commit(struct bitmap_writer *writer,
 
        writer->selected[writer->selected_nr].commit = commit;
        writer->selected[writer->selected_nr].bitmap = NULL;
+       writer->selected[writer->selected_nr].write_as = NULL;
        writer->selected[writer->selected_nr].flags = 0;
 
        writer->selected_nr++;