|
@@ -10,12 +10,14 @@ namespace Jint
|
|
public class Options
|
|
public class Options
|
|
{
|
|
{
|
|
private bool _discardGlobal;
|
|
private bool _discardGlobal;
|
|
|
|
+ private bool _discardRecursion;
|
|
private bool _strict;
|
|
private bool _strict;
|
|
private bool _allowDebuggerStatement;
|
|
private bool _allowDebuggerStatement;
|
|
private bool _allowClr;
|
|
private bool _allowClr;
|
|
private ITypeConverter _typeConverter = new DefaultTypeConverter();
|
|
private ITypeConverter _typeConverter = new DefaultTypeConverter();
|
|
private readonly List<IObjectConverter> _objectConverters = new List<IObjectConverter>();
|
|
private readonly List<IObjectConverter> _objectConverters = new List<IObjectConverter>();
|
|
private int _maxStatements;
|
|
private int _maxStatements;
|
|
|
|
+ private int _maxRecursionDepth;
|
|
private CultureInfo _culture = CultureInfo.CurrentCulture;
|
|
private CultureInfo _culture = CultureInfo.CurrentCulture;
|
|
private List<Assembly> _lookupAssemblies = new List<Assembly>();
|
|
private List<Assembly> _lookupAssemblies = new List<Assembly>();
|
|
|
|
|
|
@@ -29,6 +31,16 @@ namespace Jint
|
|
return this;
|
|
return this;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// When called, doesn't allow to use recursion.
|
|
|
|
+ /// Can be useful when you can not trust to author of the script and safety has higher priority.
|
|
|
|
+ /// </summary>
|
|
|
|
+ public Options DiscardRecursion(bool discard = true)
|
|
|
|
+ {
|
|
|
|
+ _discardRecursion = discard;
|
|
|
|
+ return this;
|
|
|
|
+ }
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// Run the script in strict mode.
|
|
/// Run the script in strict mode.
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -86,6 +98,12 @@ namespace Jint
|
|
return this;
|
|
return this;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public Options MaxRecursionDepth(int maxRecursionDepth = 0)
|
|
|
|
+ {
|
|
|
|
+ _maxRecursionDepth = maxRecursionDepth;
|
|
|
|
+ return this;
|
|
|
|
+ }
|
|
|
|
+
|
|
public Options Culture(CultureInfo cultureInfo)
|
|
public Options Culture(CultureInfo cultureInfo)
|
|
{
|
|
{
|
|
_culture = cultureInfo;
|
|
_culture = cultureInfo;
|
|
@@ -132,6 +150,11 @@ namespace Jint
|
|
return _maxStatements;
|
|
return _maxStatements;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ internal bool IsRecursionAllowed()
|
|
|
|
+ {
|
|
|
|
+ return !_discardRecursion;
|
|
|
|
+ }
|
|
|
|
+
|
|
internal CultureInfo GetCulture()
|
|
internal CultureInfo GetCulture()
|
|
{
|
|
{
|
|
return _culture;
|
|
return _culture;
|