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

Function header_check_dad

src/file_dad.c:98–122  ·  view source on GitHub ↗

@ @ requires buffer_size >= 10; @ requires separation: \separated(&file_hint_dad, buffer+(..), file_recovery, file_recovery_new); @ requires valid_header_check_param(buffer, buffer_size, safe_header_only, file_recovery, file_recovery_new); @ terminates \true; @ ensures valid_header_check_result(\result, file_recovery_new); @*/

Source from the content-addressed store, hash-verified

96 @ ensures valid_header_check_result(\result, file_recovery_new);
97 @*/
98static int header_check_dad(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)
99{
100 const struct dad_header *dad=(const struct dad_header *)buffer;
101 const unsigned int size=le32(dad->size);
102 if(size<16)
103 return 0;
104 if(file_recovery->file_stat!=NULL &&
105 file_recovery->file_check!=NULL &&
106 file_recovery->file_stat->file_hint==&file_hint_dad &&
107 file_recovery->calculated_file_size==file_recovery->file_size)
108 {
109 /*@ assert \valid_function(file_recovery->file_check); */
110 header_ignored(file_recovery_new);
111 return 0;
112 }
113 reset_file_recovery(file_recovery_new);
114 file_recovery_new->extension=file_hint_dad.extension;
115 file_recovery_new->min_filesize=size;
116 if(file_recovery_new->blocksize >= 16)
117 {
118 file_recovery_new->data_check=&data_check_dad;
119 file_recovery_new->file_check=&file_check_size_max;
120 }
121 return 1;
122}
123
124static void register_header_check_dad(file_stat_t *file_stat)
125{

Callers

nothing calls this directly

Calls 2

header_ignoredFunction · 0.85
reset_file_recoveryFunction · 0.85

Tested by

no test coverage detected