Orçamentos limitados do analisador PDF
Os orçamentos do parser, por documento, interrompem entradas hostis ou danificadas antes de a construção de tokens, o trabalho agregado sobre tokens, o crescimento de arrays ou dicionários, ou a repetição de tokens malformados consumirem recursos em excesso
Compatibility defaults
ParserMaxTokenBytesdefaults to 67,108,864 bytesParserMaxTotalTokensdefaults to 10,000,000 tokens per loadParserMaxContainerItemstem por predefinição 1 000 000 de entradas por array ou dicionárioParserMaxBadTokensdefaults to 64 malformed tokens per load
Defina qualquer limite como zero para desativar esse limite em particular
Valores negativos geram ERangeError
Strict policy
ApplyStrictParserBudgetPolicy seleciona um limite de 1 MiB por token, 100 000 tokens no total, 10 000 entradas por contentor e 8 tokens malformados
PDF.ApplyStrictParserBudgetPolicy;
try
PDF.LoadFromFile(UntrustedFileName);
except
on E: EHPDFParserBudgetExceeded do
LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;
ResetParserBudgetPolicy restores the compatibility defaults
Failure and telemetry
A breached limit raises EHPDFParserBudgetExceeded com Limit, Observed, and Maximum valores
THPDFParserBudgetLimit identifica pblTokenBytes, pblTotalTokens, pblContainerItems, or pblBadTokens
GetLastParserBudgetStatistics devolve um snapshot THPDFParserBudgetStatistics com os limites configurados, as contagens de tokens e de tokens malformados, os picos de tamanho de tokens e de contentores, a informação da violação e a validade da sessão
Budget exceptions remain terminal across modern parsing, traditional parsing, cross-reference recovery, and per-object failure isolation
Performance gate
O teste de regressão em Win32 rejeita um token de 2 MiB em 215 ms, com um pico de processo de 34 476 032 bytes, e rejeita um contentor com um milhão de tokens em 199 ms, com um pico de processo de 36 839 424 bytes
Ver também: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, Carregamento escalável