mirror of
https://github.com/UglyToad/PdfPig.git
synced 2026-01-09 14:04:35 +08:00
check for offsets exceeding file length for xref parsing #293
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user