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