This patch set improves edge case testing:

* The parser is now more strict about checking boundary conditions when
  parsing fields: an invalid field length is a possibility which is
        now being accounted for;
* The parser will now make sure that RV and RW fields are the last
  in their section by making sure that no more data is left to read
        after those;
* RW field presence was already checked for but there was no test case
  for it. This was prompted by a real-world hardware example where this
        field was not present.

Invalid field values are now skipped instead of halting further parsing
completely. It turns out that some vendors use values like "N/A" if
fields were not populated in VPD-R and 0xFF as placeholders in VPD-W.
While this data is not valid, other data might be and it should be
possible to retrieve it.

Dmitrii Shcherbakov (4):
  PCI VPD: handle additional edge cases
  PCI VPD: Add a test case for the absence of RW
  PCI VPD: Skip fields with invalid values
  PCI VPD: Fix a wrong return code in a test case

 src/util/virpcivpd.c  |  37 ++++++--
 tests/virpcivpdtest.c | 207 ++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 225 insertions(+), 19 deletions(-)

-- 
2.32.0


Reply via email to