diff options
-rw-r--r-- | pnor_partition_table.cpp | 8 | ||||
-rw-r--r-- | test/vpnor/Makefile.am.include | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/pnor_partition_table.cpp b/pnor_partition_table.cpp index 646f0c3..19bee87 100644 --- a/pnor_partition_table.cpp +++ b/pnor_partition_table.cpp @@ -317,6 +317,14 @@ void parseTocLine(const std::string& line, size_t blockSize, match[NAME_MATCH].str().c_str(), (end - start), blockSize); } + if (start >= end) + { + std::stringstream err; + err << "Partition " << match[NAME_MATCH].str() + << " has an invalid range: start offset (0x" << std::hex << start + << " is beyond open end (0x" << std::hex << end << ")\n"; + throw InvalidTocEntry(err.str()); + } writeSizes(part, start, end, blockSize); // Use the shift to convert "80" to 0x80000000 diff --git a/test/vpnor/Makefile.am.include b/test/vpnor/Makefile.am.include index 5c828d9..e70214e 100644 --- a/test/vpnor/Makefile.am.include +++ b/test/vpnor/Makefile.am.include @@ -89,7 +89,4 @@ check_PROGRAMS += \ %reldir%/write_patch \ %reldir%/toc_no_name \ %reldir%/toc_start_gt_end - -XFAIL_TESTS += \ - %reldir%/toc_start_gt_end endif |