X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fintegrity.c;h=1998f6c5db41c778b47ccdc26e927205c0f44c18;hp=37ff7b7484fe1f7692a135304773aa00571ef977;hb=7bbd03a7f450e59ebd7481cd1af0639131630f42;hpb=f9695b9f40035f1a20968293255761a8301eaba0 diff --git a/src/integrity.c b/src/integrity.c index 37ff7b74..1998f6c5 100644 --- a/src/integrity.c +++ b/src/integrity.c @@ -25,9 +25,18 @@ * along with wimlib; if not, see http://www.gnu.org/licenses/. */ -#include "wimlib_internal.h" -#include "buffer_io.h" -#include "sha1.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "wimlib/assert.h" +#include "wimlib/endianness.h" +#include "wimlib/error.h" +#include "wimlib/file_io.h" +#include "wimlib/integrity.h" +#include "wimlib/resource.h" +#include "wimlib/sha1.h" +#include "wimlib/wim.h" /* Size, in bytes, of each SHA1-summed chunk, when wimlib writes integrity * information. */ @@ -42,11 +51,11 @@ struct integrity_table { u32 size; u32 num_entries; u32 chunk_size; - u8 sha1sums[0][20]; -}; + u8 sha1sums[][20]; +} _packed_attribute; static int -calculate_chunk_sha1(filedes_t in_fd, size_t this_chunk_size, +calculate_chunk_sha1(int in_fd, size_t this_chunk_size, off_t offset, u8 sha1_md[]) { u8 buf[BUFFER_SIZE]; @@ -100,7 +109,7 @@ calculate_chunk_sha1(filedes_t in_fd, size_t this_chunk_size, */ static int read_integrity_table(const struct resource_entry *res_entry, - filedes_t in_fd, + int in_fd, u64 num_checked_bytes, struct integrity_table **table_ret) { @@ -223,7 +232,7 @@ out: * Returns 0 on success; nonzero on failure. */ static int -calculate_integrity_table(filedes_t in_fd, +calculate_integrity_table(int in_fd, off_t new_check_end, const struct integrity_table *old_table, off_t old_check_end, @@ -354,7 +363,7 @@ calculate_integrity_table(filedes_t in_fd, * to be checked. */ int -write_integrity_table(filedes_t fd, +write_integrity_table(int fd, struct resource_entry *integrity_res_entry, off_t new_lookup_table_end, off_t old_lookup_table_end, @@ -441,7 +450,7 @@ out_free_old_table: * -1 (WIM_INTEGRITY_NOT_OK) if the WIM failed the integrity check. */ static int -verify_integrity(filedes_t in_fd, const tchar *filename, +verify_integrity(int in_fd, const tchar *filename, const struct integrity_table *table, u64 bytes_to_check, wimlib_progress_func_t progress_func)