Update media wire-size assertions and cover fortified read fault injection
This commit is contained in:
1 parent
fabeb770a7
commit
00e0421e56
3 files changed
+14
-3
No files matched your search
+1
-1
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user