Update media wire-size assertions and cover fortified read fault injection

This commit is contained in:
evgeny committed 2026-10-22 19:38:56 +02:00
1 parent fabeb770a7
commit 00e0421e56
3 files changed
+14 -3

No files matched your search

+1 -1
View File
@@ -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
+8
View File
@@ -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);
+5 -2
View File
@@ -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();