This series was targeted to 'next'. This addresses some complaints from Coverity that Peff reported. v3: * revert some changes suggested by stolee * add unittest for zlib corruption. Han-Wen Nienhuys (11): reftable: fix OOB stack write in print functions reftable: fix resource leak in block.c error path reftable: fix resource leak blocksource.c reftable: check reftable_stack_auto_compact() return value reftable: ignore remove() return value in stack_test.c reftable: fix resource warning reftable: all xxx_free() functions accept NULL arguments reftable: order unittests by complexity reftable: drop stray printf in readwrite_test reftable: handle null refnames in reftable_ref_record_equal reftable: make reftable_record a tagged union reftable/block.c | 28 +++--- reftable/block_test.c | 22 ++--- reftable/blocksource.c | 6 +- reftable/generic.c | 35 ++++---- reftable/iter.c | 4 +- reftable/merged.c | 33 +++---- reftable/pq.c | 3 +- reftable/pq_test.c | 31 +++---- reftable/reader.c | 95 ++++++++++---------- reftable/readwrite_test.c | 67 +++++++++++++- reftable/record.c | 185 ++++++++++++++++---------------------- reftable/record.h | 42 ++++----- reftable/record_test.c | 181 +++++++++++++++++++------------------ reftable/stack.c | 12 +-- reftable/stack_test.c | 3 +- reftable/writer.c | 42 +++++---- t/helper/test-reftable.c | 9 +- 17 files changed, 428 insertions(+), 370 deletions(-) base-commit: fae76fe5da3df25d752f2251b7ccda3f62813aa9 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1152%2Fhanwen%2Freftable-coverity-v4 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1152/hanwen/reftable-coverity-v4 Pull-Request: https://github.com/git/git/pull/1152 Range-diff vs v3: 1: 1c1a3ff92bd = 1: 1c1a3ff92bd reftable: fix OOB stack write in print functions 2: 975a570d388 ! 2: 923293b79b4 reftable: fix resource leak in error path @@ Metadata Author: Han-Wen Nienhuys <hanwen@xxxxxxxxxx> ## Commit message ## - reftable: fix resource leak in error path + reftable: fix resource leak in block.c error path Add test coverage for corrupt zlib data. @@ reftable/block.c: int block_reader_init(struct block_reader *br, struct reftable - return 0; +done: -+ if (uncompressed) { -+ reftable_free(uncompressed); -+ } ++ reftable_free(uncompressed); + return err; } @@ reftable/readwrite_test.c: static void test_log_write_read(void) + struct reftable_write_options opts = { + .block_size = 256, + }; -+ struct reftable_iterator it = { NULL }; -+ struct reftable_reader rd = { NULL }; -+ struct reftable_block_source source = { NULL }; ++ struct reftable_iterator it = { 0 }; ++ struct reftable_reader rd = { 0 }; ++ struct reftable_block_source source = { 0 }; + struct strbuf buf = STRBUF_INIT; + struct reftable_writer *w = + reftable_new_writer(&strbuf_add_void, &buf, &opts); @@ reftable/readwrite_test.c: static void test_log_write_read(void) + }, + }; + -+ for (i = 0; i < sizeof(message)-1; i++) { ++ for (i = 0; i < sizeof(message)-1; i++) + message[i] = (uint8_t)(rand() % 64 + ' '); -+ } + + reftable_writer_set_limits(w, 1, 1); + 3: 0b9c7176d71 = 3: 7a914f77756 reftable: fix resource leak blocksource.c 4: 1dda4ee717f = 4: 51b4a17a2e1 reftable: check reftable_stack_auto_compact() return value 5: 36858e2070b = 5: 43989afcb5a reftable: ignore remove() return value in stack_test.c 6: 80b1988b885 = 6: 1c7f15d811c reftable: fix resource warning 7: 2939286924c < -: ----------- reftable: fix NULL derefs in error paths -: ----------- > 7: 47ba5ddceb8 reftable: all xxx_free() functions accept NULL arguments 8: 9dce18d7349 ! 8: aba8b8113ad reftable: order unittests by complexity @@ Metadata ## Commit message ## reftable: order unittests by complexity - This is a more pratical ordering when working on refactorings of the reftable + This is a more practical ordering when working on refactorings of the reftable code. Signed-off-by: Han-Wen Nienhuys <hanwen@xxxxxxxxxx> @@ t/helper/test-reftable.c int cmd__reftable(int argc, const char **argv) { -+ // test from simple to complex. ++ /* test from simple to complex. */ basics_test_main(argc, argv); + record_test_main(argc, argv); block_test_main(argc, argv); 9: 6b0af68f0b9 = 9: f2af404d7f1 reftable: drop stray printf in readwrite_test 10: bff85cb0809 = 10: d2ce1bfef9f reftable: handle null refnames in reftable_ref_record_equal 11: b3e592b9c27 = 11: 0ffc1cf0e42 reftable: make reftable_record a tagged union -- gitgitgadget