reftable: introduce macros to allocate arrays
Similar to the preceding commit, let's carry over macros to allocate arrays with `REFTABLE_ALLOC_ARRAY()` and `REFTABLE_CALLOC_ARRAY()`. This requires us to change the signature of `reftable_calloc()`, which only takes a single argument right now and thus puts the burden on the caller to calculate the final array's size. This is a net improvement though as it means that we can now provide proper overflow checks when multiplying the array size with the member size. Convert callsites of `reftable_calloc()` to the new signature and start using the new macros where possible. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
f6b58c1be4
commit
b4ff12c8ee
@ -56,7 +56,9 @@ static void write_table(char ***names, struct strbuf *buf, int N,
|
||||
int i = 0, n;
|
||||
struct reftable_log_record log = { NULL };
|
||||
const struct reftable_stats *stats = NULL;
|
||||
*names = reftable_calloc(sizeof(char *) * (N + 1));
|
||||
|
||||
REFTABLE_CALLOC_ARRAY(*names, N + 1);
|
||||
|
||||
reftable_writer_set_limits(w, update_index, update_index);
|
||||
for (i = 0; i < N; i++) {
|
||||
char name[100];
|
||||
@ -188,7 +190,7 @@ static void test_log_overflow(void)
|
||||
static void test_log_write_read(void)
|
||||
{
|
||||
int N = 2;
|
||||
char **names = reftable_calloc(sizeof(char *) * (N + 1));
|
||||
char **names = reftable_calloc(N + 1, sizeof(*names));
|
||||
int err;
|
||||
struct reftable_write_options opts = {
|
||||
.block_size = 256,
|
||||
@ -519,7 +521,7 @@ static void test_table_read_write_seek_index(void)
|
||||
static void test_table_refs_for(int indexed)
|
||||
{
|
||||
int N = 50;
|
||||
char **want_names = reftable_calloc(sizeof(char *) * (N + 1));
|
||||
char **want_names = reftable_calloc(N + 1, sizeof(*want_names));
|
||||
int want_names_len = 0;
|
||||
uint8_t want_hash[GIT_SHA1_RAWSZ];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user