mirror of
https://github.com/UglyToad/PdfPig.git
synced 2026-03-10 00:23:29 +08:00
check for offsets exceeding file length for xref parsing #293
This commit is contained in:
@@ -23,6 +23,8 @@
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var builderOffsets = new Dictionary<IndirectReference, long>();
|
||||||
|
|
||||||
var bruteForceOffsets = BruteForceSearcher.GetObjectLocations(bytes);
|
var bruteForceOffsets = BruteForceSearcher.GetObjectLocations(bytes);
|
||||||
if (bruteForceOffsets.Count > 0)
|
if (bruteForceOffsets.Count > 0)
|
||||||
@@ -77,10 +79,11 @@
|
|||||||
|
|
||||||
foreach (var item in bruteForceOffsets)
|
foreach (var item in bruteForceOffsets)
|
||||||
{
|
{
|
||||||
//xrefOffset[item.Key] = item.Value;
|
builderOffsets[item.Key] = item.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actualOffsets = builderOffsets;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -131,6 +134,12 @@
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (offset >= bytes.Length)
|
||||||
|
{
|
||||||
|
bytes.Seek(originOffset);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bytes.Seek(offset);
|
bytes.Seek(offset);
|
||||||
|
|
||||||
if (ReadHelper.IsWhitespace(bytes.CurrentByte))
|
if (ReadHelper.IsWhitespace(bytes.CurrentByte))
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Core;
|
using Core;
|
||||||
using Logging;
|
using Logging;
|
||||||
using Parts;
|
|
||||||
using Tokenization.Scanner;
|
using Tokenization.Scanner;
|
||||||
using Tokens;
|
using Tokens;
|
||||||
|
|
||||||
@@ -30,6 +29,11 @@
|
|||||||
return startXRefOffset;
|
return startXRefOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (startXRefOffset >= inputBytes.Length)
|
||||||
|
{
|
||||||
|
return CalculateXRefFixedOffset(startXRefOffset, scanner, inputBytes);
|
||||||
|
}
|
||||||
|
|
||||||
scanner.Seek(startXRefOffset);
|
scanner.Seek(startXRefOffset);
|
||||||
|
|
||||||
scanner.MoveNext();
|
scanner.MoveNext();
|
||||||
|
|||||||
Reference in New Issue
Block a user