mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 19:01:57 -04:00
Enforce content file CRC as terminal by rejecting trailing data and terminating parse loop
This commit is contained in:
parent
30aa997947
commit
c0731582a5
1 changed files with 14 additions and 0 deletions
|
|
@ -3422,6 +3422,20 @@ static void state_read_content(struct snapraid_state* state, const char* path, S
|
|||
}
|
||||
|
||||
crc_checked = 1;
|
||||
|
||||
/* crc must be the end of the content file */
|
||||
c = sgetc(f);
|
||||
if (c != EOF) {
|
||||
/* LCOV_EXCL_START */
|
||||
log_fatal(ECONTENT, "Unexpected data after CRC in content file '%s' at offset %" PRIi64 "\n", path, stell(f));
|
||||
log_fatal(ECONTENT, "The content file '%s' is damaged or corrupted!\n", path);
|
||||
log_fatal(ECONTENT, "To recover, rename or delete it and rerun the command.\n");
|
||||
log_fatal(ECONTENT, "SnapRAID will automatically fall back to the next healthy copy.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
/* LCOV_EXCL_STOP */
|
||||
}
|
||||
|
||||
break;
|
||||
} else {
|
||||
/* LCOV_EXCL_START */
|
||||
decoding_error(path, f);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue