Fixed bug found by fuzzing.

Thanks to OSS-Fuzz for finding the bug.
https://oss-fuzz.com/v2/testcase-detail/4700815620046848
diff --git a/src/bloaty.cc b/src/bloaty.cc
index 025f5be..8834c0c 100644
--- a/src/bloaty.cc
+++ b/src/bloaty.cc
@@ -1068,6 +1068,13 @@
 void RangeSink::AddRange(const char* analyzer, string_view name,
                          uint64_t vmaddr, uint64_t vmsize, uint64_t fileoff,
                          uint64_t filesize) {
+  if (vmsize == RangeMap::kUnknownSize || filesize == RangeMap::kUnknownSize) {
+    // AddRange() is used for segments and sections; the mappings that establish
+    // the file <-> vm mapping.  The size should always be known.  Moreover it
+    // would be unclear how the logic should work if the size was *not* known.
+    THROW("AddRange() does not allow unknown size.");
+  }
+
   if (IsVerboseForVMRange(vmaddr, vmsize) ||
       IsVerboseForFileRange(fileoff, filesize)) {
     printf("[%s, %s] AddRange(%.*s, %" PRIx64 ", %" PRIx64 ", %" PRIx64
diff --git a/tests/testdata/fuzz_corpus/a493f77d0d04aaed2e2dca8256c9a5cc591aa8fa b/tests/testdata/fuzz_corpus/a493f77d0d04aaed2e2dca8256c9a5cc591aa8fa
new file mode 100755
index 0000000..c768a24
--- /dev/null
+++ b/tests/testdata/fuzz_corpus/a493f77d0d04aaed2e2dca8256c9a5cc591aa8fa
Binary files differ