Formulier-scriptbudgetten

Elke formulier-scriptevaluatie draait onder strikte budgetten die de CPU-tijd, het geheugen, de recursiediepte, het aantal statements en bewerkingen en de uitvoer die een script kan genereren bestrijken, zodat een op hol geslagen berekening een herberekeningspas nooit kan laten haperen of het geheugen kan uitputten

THPDFScriptBudgets

THotPDF.FormScriptBudgets bevat de budgetset die door EvaluateLoadedFieldJavaScript en door elke herberekeningspas wordt toegepast. De THPDFScriptBudgets-record stelt MaxScriptLength, MaxStatements, MaxExpressionDepth, MaxOperations, MaxElapsedMilliseconds (wandklok-CPU-afslag), MaxValueBytes (enkele-waarde-limiet), MaxTotalValueBytes (cumulatief geheugen) en MaxOutputBytes (gegenereerde-uitvoerlimiet) bloot; nul in elk veld heft die specifieke limiet op

var
  Budgets: THPDFScriptBudgets;
begin
  Budgets:= PDF.FormScriptBudgets;
  Budgets.MaxElapsedMilliseconds:= 100;
  Budgets.MaxTotalValueBytes:= 1024* 1024;
  PDF.FormScriptBudgets:= Budgets;
end;

Handhaving en telemetrie

De CPU-afslag wordt gecontroleerd terwijl bewerkingen en waarde-bytes accumuleren, zodat scripts deze niet kunnen omzeilen alleen door toewijzing; het cumulatieve geheugenbudget vangt scripts die veel kleine waarden toewijzen en weggooien. Een overschrijding laat de evaluatie mislukken met een beschrijvende ErrorText, en de resultaatrecord rapporteert ElapsedMilliseconds- en ValueBytes-telemetrie naast het aantal bewerkingen

De standaardbudgetten behouden de historische limieten (8192-byte-scripts, 32 statements, diepte 32, 1024 bewerkingen, 256 KB per waarde) en voegen een CPU-afslag van 500 ms, een cumulatief geheugenbudget van 4 MB en een uitvoerlimiet van 64 KB toe