@ @ 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; @*/
| 470 | @ assigns *file_recovery_new; |
| 471 | @*/ |
| 472 | static 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 | |
| 499 | static void register_header_check_pdf(file_stat_t *file_stat) |
| 500 | { |
nothing calls this directly
no test coverage detected