@ @ requires buffer_size >= sizeof(struct ext2_super_block); @ requires separation: \separated(&file_hint_ext2_sb, 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; @*/
| 86 | @ assigns *file_recovery_new; |
| 87 | @*/ |
| 88 | static int header_check_ext2_sb(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) |
| 89 | { |
| 90 | const struct ext2_super_block *sb=(const struct ext2_super_block *)buffer; |
| 91 | if(test_EXT2(sb, NULL)!=0) |
| 92 | return 0; |
| 93 | /*@ assert le32(sb->s_log_block_size) <= 6; */ |
| 94 | reset_file_recovery(file_recovery_new); |
| 95 | file_recovery_new->extension=file_hint_ext2_sb.extension; |
| 96 | file_recovery_new->file_size=(uint64_t)EXT2_MIN_BLOCK_SIZE<<le32(sb->s_log_block_size); |
| 97 | file_recovery_new->data_check=&data_check_size; |
| 98 | file_recovery_new->file_check=&file_check_size; |
| 99 | file_recovery_new->file_rename=&file_rename_ext; |
| 100 | return 1; |
| 101 | } |
| 102 | |
| 103 | /*@ |
| 104 | @ requires file_recovery->data_check==&data_check_extdir; |
nothing calls this directly
no test coverage detected