From 182e2d45678d0487be71370c37b88daca3d2c54b Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sat, 12 Oct 2024 16:23:05 +0200 Subject: Make gendata and co safer by checking buffer size --- tools/000_gendata/gendata.c | 2 +- tools/expected_distributions.h | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'tools') diff --git a/tools/000_gendata/gendata.c b/tools/000_gendata/gendata.c index 0d647f9..213852f 100644 --- a/tools/000_gendata/gendata.c +++ b/tools/000_gendata/gendata.c @@ -19,7 +19,7 @@ run(void) { default: nissy_datainfo(size, buf, write_stdout); consistent = nissy_checkdata(size, buf) == 0; - expected = check_distribution(solver, buf); + expected = check_distribution(solver, size, buf); if (consistent && expected) { printf("\n"); printf("Generated %" PRId64 " bytes.\n", size); diff --git a/tools/expected_distributions.h b/tools/expected_distributions.h index 1b97166..6ca1c90 100644 --- a/tools/expected_distributions.h +++ b/tools/expected_distributions.h @@ -129,11 +129,11 @@ distribution_equal(const uint64_t *expected, const uint64_t *actual, int n) } static bool -check_cocsep(const void *data) +check_cocsep(uint64_t data_size, const void *data) { tableinfo_t info; - readtableinfo(data, &info); + readtableinfo(data_size, data, &info); return distribution_equal( expected_cocsep, info.distribution, info.maxvalue); } @@ -151,12 +151,12 @@ unknown_h48(uint8_t h, uint8_t k) } STATIC bool -check_distribution(const char *solver, const void *data) +check_distribution(const char *solver, uint64_t data_size, const void *data) { tableinfo_t info = {0}; if (!strncmp(solver, "h48", 3)) { - readtableinfo(data, &info); + readtableinfo(data_size, data, &info); if (!distribution_equal( expected_cocsep, info.distribution, info.maxvalue)) { printf("ERROR! cocsep distribution is incorrect\n"); @@ -164,7 +164,7 @@ check_distribution(const char *solver, const void *data) } printf("cocsep distribution is correct\n"); - readtableinfo_n(data, 2, &info); + readtableinfo_n(data_size, data, 2, &info); if (unknown_h48(info.h48h, info.bits)) goto check_distribution_unknown; -- cgit v1.3