From 08bf2a4ccc41c9855ac261bc7b23e26d7fda1ddb Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Wed, 9 Aug 2023 23:02:37 -0400 Subject: [PATCH] Added several tests and fixed bugs in [load/store]_u16. Must pass the union as a pointer or the compiler optimizes it away. --- include/bytes.h | 4 ++-- src/bytes.c | 8 ++++---- src/haggis.c | 6 ++++-- test/Makefile | 5 +++++ test/init_file_sha1.c | 3 ++- test/init_file_sha256.c | 17 +++++++++++++++++ test/load_file_md5 | Bin 0 -> 28176 bytes test/load_file_md5.c | 16 ++++++++++++++++ test/load_u16.c | 16 ++++++++++++++++ test/store_file_md5.c | 17 +++++++++++++++++ test/store_u16.c | 15 +++++++++++++++ 11 files changed, 98 insertions(+), 9 deletions(-) create mode 100644 test/init_file_sha256.c create mode 100755 test/load_file_md5 create mode 100644 test/load_file_md5.c create mode 100644 test/load_u16.c create mode 100644 test/store_file_md5.c create mode 100644 test/store_u16.c diff --git a/include/bytes.h b/include/bytes.h index 31911e8..320b3a6 100644 --- a/include/bytes.h +++ b/include/bytes.h @@ -37,8 +37,8 @@ #include "haggis.h" -int load_u16(FILE *stream, u16 num); -int store_u16(FILE *stream, u16 num); +int load_u16(FILE *stream, u16 *num); +int store_u16(FILE *stream, u16 *num); int load_u32(FILE *stream, u32 num); int store_u32(FILE *stream, u32 num); int load_u64(FILE *stream, u64 num); diff --git a/src/bytes.c b/src/bytes.c index 6c118ee..b465ddc 100644 --- a/src/bytes.c +++ b/src/bytes.c @@ -38,12 +38,12 @@ #include "haggis.h" #if __BYTE_ORDER__ == __LITTLE_ENDIAN -int load_u16(FILE *stream, u16 num) { - return fread(num.bytes, 1, 2, stream); +int load_u16(FILE *stream, u16 *num) { + return fread(&num->bytes, 1, 2, stream); } -int store_u16(FILE *stream, u16 num) { - return fwrite(num.bytes, 1, 2, stream); +int store_u16(FILE *stream, u16 *num) { + return fwrite(&num->bytes, 1, 2, stream); } int load_u32(FILE *stream, u32 num) { diff --git a/src/haggis.c b/src/haggis.c index f504135..99a3b09 100644 --- a/src/haggis.c +++ b/src/haggis.c @@ -351,6 +351,8 @@ int haggis_load_file(FILE *stream, haggis_file *f) { return -1; int res = fread(f->data, 1, (size_t)f->len.val, stream); if (res != (size_t)f->len.val) { + fprintf(stderr, "Error reading file:\n length: %i\n expected: %lu\n", + res, f->len.val); free(f->data); return 1; } @@ -643,7 +645,7 @@ int haggis_load_node(FILE *stream, haggis_node *node) { res = load_u64(stream, node->mtime); if (res != 8) return 2; - res = load_u16(stream, mode); + res = load_u16(stream, &mode); if (res != 2) return 2; tag = haggis_filetype_from_mode(mode); @@ -664,6 +666,6 @@ int haggis_store_node(FILE *stream, haggis_node *node) { if (store_u32(stream, node->gid) != 4) return 2; if (store_u64(stream, node->mtime) != 8) return 2; mode = haggis_derive_mode(node->mode, &node->filetype); - if (store_u16(stream, mode) != 2) return 2; + if (store_u16(stream, &mode) != 2) return 2; return haggis_store_filetype(stream, &node->filetype); } diff --git a/test/Makefile b/test/Makefile index 58a4f98..d90d555 100644 --- a/test/Makefile +++ b/test/Makefile @@ -34,6 +34,8 @@ CFLAGS += -I../include LIBS += ../libhaggis.a LIBS += -lmd +tests += store_u16 +tests += load_u16 tests += store_header tests += check_header tests += store_device @@ -46,6 +48,9 @@ tests += store_sha256 tests += load_sha256 tests += init_file_md5 tests += init_file_sha1 +tests += init_file_sha256 +tests += store_file_md5 +#tests += load_file_md5 total != echo $(tests) | wc -w | awk '{ print $$1 }' .PHONY: test diff --git a/test/init_file_sha1.c b/test/init_file_sha1.c index fca9667..c6dfae7 100644 --- a/test/init_file_sha1.c +++ b/test/init_file_sha1.c @@ -6,7 +6,8 @@ int main() { haggis_file hf; char *f = "check_header.c"; - const u8 buf[20] = { 175, 45, 7, 226, 140, 184, 187, 69, 59, 208, 246, 108, 187, 249, 63, 111, 56, 65, 1, 58 }; + const u8 buf[20] = { 175, 45, 7, 226, 140, 184, 187, 69, 59, 208, 246, 108, + 187, 249, 63, 111, 56, 65, 1, 58 }; assert(haggis_file_init(f, &hf, sha1) == 0); assert(hf.cksum.tag == sha1); diff --git a/test/init_file_sha256.c b/test/init_file_sha256.c new file mode 100644 index 0000000..485826d --- /dev/null +++ b/test/init_file_sha256.c @@ -0,0 +1,17 @@ +#include "haggis_private.h" +#include +#include +#include + +int main() { + haggis_file hf; + char *f = "check_header.c"; + const u8 buf[32] = { 254, 29, 31, 135, 226, 153, 9, 124, 189, 232, 10, 158, + 250, 203, 77, 108, 230, 7, 159, 124, 6, 237, 169, 239, 70, 218, 173, 188, + 153, 219, 121, 82 }; + + assert(haggis_file_init(f, &hf, sha256) == 0); + assert(hf.cksum.tag == sha256); + assert(memcmp(buf, hf.cksum.sum.sha256, 32) == 0); +} + diff --git a/test/load_file_md5 b/test/load_file_md5 new file mode 100755 index 0000000000000000000000000000000000000000..627f1ba6fb8cdcb3de03e4572c31763727ee5152 GIT binary patch literal 28176 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 literal 0 HcmV?d00001 diff --git a/test/load_file_md5.c b/test/load_file_md5.c new file mode 100644 index 0000000..66ea029 --- /dev/null +++ b/test/load_file_md5.c @@ -0,0 +1,16 @@ +#include "haggis_private.h" +#include +#include +#include + +int main() { + haggis_file hf; + char *f = "output/store_file_md5"; + FILE *fd; + int res; + + fd = fopen(f, "r"); + res = haggis_load_file(fd, &hf); + fclose(fd); + return 1; +} diff --git a/test/load_u16.c b/test/load_u16.c new file mode 100644 index 0000000..2c4060b --- /dev/null +++ b/test/load_u16.c @@ -0,0 +1,16 @@ +#include "bytes.h" +#include "haggis_private.h" +#include +#include + +int main() { + u16 n; + FILE *fd; + + n.val = 0; + fd = fopen("output/u16", "r"); + assert(load_u16(fd, &n) == 2); + assert(n.val == 300); + fclose(fd); +} + diff --git a/test/store_file_md5.c b/test/store_file_md5.c new file mode 100644 index 0000000..4fa1efd --- /dev/null +++ b/test/store_file_md5.c @@ -0,0 +1,17 @@ +#include "haggis_private.h" +#include +#include +#include + +int main() { + haggis_file hf; + char *f = "load_device.c"; + FILE *fd; + + assert(haggis_file_init(f, &hf, md5) == 0); + fd = fopen("output/store_file_md5", "w"); + assert(haggis_store_file(fd, &hf) == 0); + fclose(fd); + return 0; +} + diff --git a/test/store_u16.c b/test/store_u16.c new file mode 100644 index 0000000..d2cfe15 --- /dev/null +++ b/test/store_u16.c @@ -0,0 +1,15 @@ +#include "bytes.h" +#include "haggis_private.h" +#include +#include + +int main() { + u16 n; + FILE *fd; + + n.val = 300; + fd = fopen("output/u16", "w"); + assert(store_u16(fd, &n) == 2); + fflush(fd); + fclose(fd); +}