summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pnor_partition_table.cpp8
-rw-r--r--test/vpnor/Makefile.am.include3
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
OpenPOWER on IntegriCloud