Ograniczone budżety parsera PDF

Budżety parsera w zakresie dokumentu zatrzymują wrogie lub uszkodzone wejście, zanim konstruowanie tokenów, zbiorcza praca na tokenach, wzrost tablic lub słowników albo powtarzające się błędne tokeny pochłoną nadmierne zasoby

Domyślne kompatybilne

Ustaw dowolny limit na zero, aby wyłączyć ten pojedynczy limit

Wartości ujemne podnoszą ERangeError

Polityka ścisła

ApplyStrictParserBudgetPolicy wybiera limit tokenu 1 MiB, 100 000 tokenów łącznie, 10 000 wpisów kontenerów i 8 błędnych tokenów

PDF.ApplyStrictParserBudgetPolicy;
try
  PDF.LoadFromFile(UntrustedFileName);
except
  on E: EHPDFParserBudgetExceeded do
    LogParserRejection(E.Limit, E.Observed, E.Maximum);
end;

ResetParserBudgetPolicy przywraca domyślne kompatybilne

Błędy i telemetria

Przekroczony limit podnosi EHPDFParserBudgetExceeded z wartościami Limit, Observed i Maximum

THPDFParserBudgetLimit wskazuje pblTokenBytes, pblTotalTokens, pblContainerItems lub pblBadTokens

GetLastParserBudgetStatistics zwraca migawkę THPDFParserBudgetStatistics ze skonfigurowanymi limitami, licznikami tokenów i tokenów błędnych, szczytowymi rozmiarami tokenów i kontenerów, informacją o przekroczeniu i ważnością sesji

Wyjątki budżetu pozostają terminalne przy nowoczesnym parsowaniu, tradycyjnym parsowaniu, odzyskiwaniu referencji krzyżowych i izolacji błędów per obiekt

Brama wydajności

Brama regresji Win32 odrzuca token 2 MiB w 215 ms przy szczycie procesu 34 476 032 bajty i odrzuca kontener miliona tokenów w 199 ms przy szczycie procesu 36 839 424 bajty

Zobacz też: ApplyStrictParserBudgetPolicy, ResetParserBudgetPolicy, GetLastParserBudgetStatistics, Skalowalne ładowanie z dostępem losowym