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

Function header_check_pdf

src/file_pdf.c:472–497  ·  view source on GitHub ↗

@ @ requires buffer_size >= 512; @ requires separation: \separated(&file_hint_pdf, 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

470 @ assigns *file_recovery_new;
471 @*/
472static int header_check_pdf(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)
473{
474 uint64_t file_size;
475 if(!isprint(buffer[6]))
476 return 0;
477 file_size=read_pdf_file(buffer);
478 if(file_size > PHOTOREC_MAX_FILE_SIZE)
479 return 0;
480 reset_file_recovery(file_recovery_new);
481 if(td_memmem(buffer, buffer_size, "<</Illustrator ", 15) != NULL)
482 file_recovery_new->extension="ai";
483 else
484 {
485 file_recovery_new->extension=file_hint_pdf.extension;
486 file_recovery_new->file_rename=&file_rename_pdf;
487 }
488 if(file_size == 0)
489 {
490 file_recovery_new->file_check=&file_check_pdf;
491 return 1;
492 }
493 file_recovery_new->calculated_file_size=file_size;
494 file_recovery_new->data_check=&data_check_size;
495 file_recovery_new->file_check=&file_check_pdf_and_size;
496 return 1;
497}
498
499static void register_header_check_pdf(file_stat_t *file_stat)
500{

Callers

nothing calls this directly

Calls 3

read_pdf_fileFunction · 0.85
reset_file_recoveryFunction · 0.85
td_memmemFunction · 0.85

Tested by

no test coverage detected