MCPcopy Create free account
hub / github.com/cgsecurity/testdisk / header_check_tar

Function header_check_tar

src/file_tar.c:117–134  ·  view source on GitHub ↗

@ @ requires buffer_size >= sizeof(struct tar_posix_header); @ requires separation: \separated(&file_hint_tar, buffer+(..), file_recovery, file_recovery_new); @ requires valid_header_check_param(buffer, buffer_size, safe_header_only, file_recovery, file_recovery_new); @ ensures valid_header_check_result(\result, file_recovery_new); @ assigns *file_recovery_new; @*/

Source from the content-addressed store, hash-verified

115 @ assigns *file_recovery_new;
116 @*/
117static int header_check_tar(const unsigned char *buffer, const unsigned int buffer_size, const unsigned int safe_header_only, const file_recovery_t *file_recovery, file_recovery_t *file_recovery_new)
118{
119 /*@ assert valid_header_check_param(buffer, buffer_size, safe_header_only, file_recovery, file_recovery_new); */
120 const struct tar_posix_header *h = (const struct tar_posix_header *)buffer;
121 if(is_valid_tar_header(h) == 0)
122 return 0;
123 /*@ assert \valid_read(file_recovery); */
124 if(file_recovery->file_stat != NULL && file_recovery->file_stat->file_hint == &file_hint_tar)
125 {
126 /* header_ignored(file_recovery_new); is useless as there is no file check */
127 return 0;
128 }
129 reset_file_recovery(file_recovery_new);
130 file_recovery_new->extension = file_hint_tar.extension;
131 file_recovery_new->min_filesize = 512;
132 /*@ assert valid_file_recovery(file_recovery_new); */
133 return 1;
134}
135
136/*@
137 @ requires valid_register_header_check(file_stat);

Callers

nothing calls this directly

Calls 2

is_valid_tar_headerFunction · 0.85
reset_file_recoveryFunction · 0.85

Tested by

no test coverage detected