@ @ 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; @*/
| 115 | @ assigns *file_recovery_new; |
| 116 | @*/ |
| 117 | static 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); |
nothing calls this directly
no test coverage detected