will not parse compressed sections
| 564 | // will not parse compressed sections |
| 565 | // |
| 566 | EFI_STATUS |
| 567 | VerifyFv ( |
| 568 | IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader |
| 569 | ) |
| 570 | /*++ |
| 571 | |
| 572 | Routine Description: |
| 573 | |
| 574 | Verify the current pointer points to a valid FV header. |
| 575 | |
| 576 | Arguments: |
| 577 | |
| 578 | FvHeader Pointer to an alleged FV file. |
| 579 | |
| 580 | Returns: |
| 581 | |
| 582 | EFI_SUCCESS The FV header is valid. |
| 583 | EFI_VOLUME_CORRUPTED The FV header is not valid. |
| 584 | EFI_INVALID_PARAMETER A required parameter was NULL. |
| 585 | EFI_ABORTED Operation aborted. |
| 586 | |
| 587 | --*/ |
| 588 | { |
| 589 | UINT16 Checksum; |
| 590 | |
| 591 | // |
| 592 | // Verify input parameters |
| 593 | // |
| 594 | if (FvHeader == NULL) { |
| 595 | return EFI_INVALID_PARAMETER; |
| 596 | } |
| 597 | |
| 598 | if (FvHeader->Signature != EFI_FVH_SIGNATURE) { |
| 599 | Error (NULL, 0, 0006, "invalid FV header signature", NULL); |
| 600 | return EFI_VOLUME_CORRUPTED; |
| 601 | } |
| 602 | // |
| 603 | // Verify header checksum |
| 604 | // |
| 605 | Checksum = CalculateSum16 ((UINT16 *) FvHeader, FvHeader->HeaderLength / sizeof (UINT16)); |
| 606 | |
| 607 | if (Checksum != 0) { |
| 608 | Error (NULL, 0, 0006, "invalid FV header checksum", NULL); |
| 609 | return EFI_ABORTED; |
| 610 | } |
| 611 | |
| 612 | return EFI_SUCCESS; |
| 613 | } |
| 614 | |
| 615 | EFI_STATUS |
| 616 | VerifyFfsFile ( |
no test coverage detected