pnor_partition_table: Disallow ToC entries with start greater than end

Change-Id: If0861efb0f6bccf82a2df94204821f22198e17b0
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
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 @@
                 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 @@
 	%reldir%/write_patch \
 	%reldir%/toc_no_name \
 	%reldir%/toc_start_gt_end
-
-XFAIL_TESTS += \
-	%reldir%/toc_start_gt_end
 endif