diff --git a/tests/Makefile.am b/tests/Makefile.am index 2787cac7..200faf7e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -905,7 +905,7 @@ check_PROGRAMS += test_media_blocks test_media_blocks_SOURCES = test_media_blocks.c media_delivery_fixture.h test_media_blocks_CFLAGS = $(test_media_delivery_download_CFLAGS) test_media_blocks_LDADD = $(LIBUTUN) $(CRYPTO_LIBS) $(COMMON_LIBS) -test_media_blocks_LDFLAGS = -Wl,--wrap=etcp_route_send -Wl,--wrap=RAND_bytes -Wl,--wrap=fwrite -Wl,--wrap=fread \ +test_media_blocks_LDFLAGS = -Wl,--wrap=etcp_route_send -Wl,--wrap=RAND_bytes -Wl,--wrap=fwrite -Wl,--wrap=fread -Wl,--wrap=__fread_chk \ -Wl,--wrap=fseeko -Wl,--wrap=fclose -Wl,--wrap=fflush -Wl,--wrap=rename -Wl,--wrap=ma_sha256_file test_media_delivery_integration_SOURCES = test_media_delivery_integration.c diff --git a/tests/test_media_blocks.c b/tests/test_media_blocks.c index 5140569c..0c7f64e7 100644 --- a/tests/test_media_blocks.c +++ b/tests/test_media_blocks.c @@ -23,6 +23,11 @@ size_t __wrap_fread(void* bytes, size_t size, size_t count, FILE* file) { if (fail_io(IO_READ)) return 0; return __real_fread(bytes, size, count, file); } +size_t __real___fread_chk(void*, size_t, size_t, size_t, FILE*); +size_t __wrap___fread_chk(void* bytes, size_t capacity, size_t size, size_t count, FILE* file) { + if (fail_io(IO_READ)) return 0; + return __real___fread_chk(bytes, capacity, size, count, file); +} int __real_fseeko(FILE*, off_t, int); int __wrap_fseeko(FILE* file, off_t offset, int origin) { return fail_io(IO_SEEK) ? -1 : __real_fseeko(file, offset, origin); @@ -223,6 +228,9 @@ static void test_io_failures(void) { if (variant == 7) fault_skip = 2; receive(f.client, &done); } + if (fault_hits != 1 || download(f.client) || done_count != 1 || done_err != -1) + DEBUG_ERROR(DEBUG_CATEGORY_DEBUG, "IO regression variant=%d fault=%d hits=%d remaining_skip=%d active=%p done=%d error=%d", + variant, fault, fault_hits, fault_skip, (void*)download(f.client), done_count, done_err); REQUIRE(fault_hits == 1 && !download(f.client) && done_count == 1 && done_err == -1); REQUIRE(!f.client->md.destinations && !f.client->md.block_sources->head); require_old_destination(); finish(&f); diff --git a/tests/test_media_delivery_sql.c b/tests/test_media_delivery_sql.c index 0bb75b1b..13cbe212 100644 --- a/tests/test_media_delivery_sql.c +++ b/tests/test_media_delivery_sql.c @@ -401,8 +401,11 @@ static void test_proto_sizes(void) { if (sizeof(struct media_pkt_super_hello) != 17) { FAIL("super_hello: %zu != 17", sizeof(struct media_pkt_super_hello)); ok = 0; } if (sizeof(struct media_pkt_super_ack) != 5) { FAIL("super_ack: %zu != 5", sizeof(struct media_pkt_super_ack)); ok = 0; } if (sizeof(struct media_pkt_block_req) != 53) { FAIL("block_req: %zu != 53", sizeof(struct media_pkt_block_req)); ok = 0; } - if (sizeof(struct media_pkt_cancel) != 37) { FAIL("cancel: %zu != 37", sizeof(struct media_pkt_cancel)); ok = 0; } - if (sizeof(struct media_pkt_block_done) != 105) { FAIL("block_done: %zu != 105", sizeof(struct media_pkt_block_done)); ok = 0; } + if (sizeof(struct media_pkt_cancel) != 53) { FAIL("cancel: %zu != 53", sizeof(struct media_pkt_cancel)); ok = 0; } + if (sizeof(struct media_pkt_block_done) != 58) { FAIL("block_done: %zu != 58", sizeof(struct media_pkt_block_done)); ok = 0; } + if (sizeof(struct media_pkt_block_chunk) != 59) { FAIL("block_chunk: %zu != 59", sizeof(struct media_pkt_block_chunk)); ok = 0; } + if (sizeof(struct media_pkt_block_overloaded) != 57) { FAIL("overloaded: %zu != 57", sizeof(struct media_pkt_block_overloaded)); ok = 0; } + if (sizeof(struct media_pkt_block_relay_full) != 55) { FAIL("relay_full: %zu != 55", sizeof(struct media_pkt_block_relay_full)); ok = 0; } if (sizeof(struct media_pkt_query_resp_entry) != 49) { FAIL("query_resp_entry: %zu != 49", sizeof(struct media_pkt_query_resp_entry)); ok = 0; } if (sizeof(struct media_pkt_query_resp) != 36) { FAIL("query_resp: %zu != 36", sizeof(struct media_pkt_query_resp)); ok = 0; } if (ok) OK();