check for offsets exceeding file length for xref parsing #293

This commit is contained in:
Eliot Jones 2021-02-21 12:04:17 -04:00
parent 30dbc4cd41
commit becc772242
2 changed files with 16 additions and 3 deletions

View File

@ -23,6 +23,8 @@
{
return true;
}
var builderOffsets = new Dictionary<IndirectReference, long>();
var bruteForceOffsets = BruteForceSearcher.GetObjectLocations(bytes);
if (bruteForceOffsets.Count > 0)
@ -77,10 +79,11 @@
foreach (var item in bruteForceOffsets)
{
//xrefOffset[item.Key] = item.Value;
builderOffsets[item.Key] = item.Value;
}
}
actualOffsets = builderOffsets;
}
return false;
@ -131,6 +134,12 @@
try
{
if (offset >= bytes.Length)
{
bytes.Seek(originOffset);
return false;
}
bytes.Seek(offset);
if (ReadHelper.IsWhitespace(bytes.CurrentByte))

View File

@ -4,7 +4,6 @@
using System.Collections.Generic;
using Core;
using Logging;
using Parts;
using Tokenization.Scanner;
using Tokens;
@ -30,6 +29,11 @@
return startXRefOffset;
}
if (startXRefOffset >= inputBytes.Length)
{
return CalculateXRefFixedOffset(startXRefOffset, scanner, inputBytes);
}
scanner.Seek(startXRefOffset);
scanner.MoveNext();