Module: Odin::Utils::SecurityLimits

Defined in:
lib/odin/utils/security_limits.rb

Constant Summary collapse

MAX_DOCUMENT_SIZE =

10 MB

10 * 1024 * 1024
MAX_DEPTH =
64
MAX_PATH_SEGMENTS =
32
MAX_STRING_LENGTH =

1 MB

1_000_000
MAX_ARRAY_INDEX =
10_000
MAX_BINARY_SIZE =

10 MB

10_000_000
MAX_RECORDS =
100_000
MAX_ASSIGNMENTS =
100_000
MAX_REGEX_PATTERN_LENGTH =
500
MAX_EXPRESSION_DEPTH =
32

Class Method Summary collapse

Class Method Details

.env_int(name, default) ⇒ Object

Read an integer limit from ODIN_, falling back to default.



18
19
20
21
22
23
24
25
# File 'lib/odin/utils/security_limits.rb', line 18

def self.env_int(name, default)
  raw = ENV["ODIN_#{name}"]
  return default if raw.nil? || raw.strip.empty?

  Integer(raw)
rescue ArgumentError
  default
end

.max_expression_depthObject

Expression evaluation depth cap; standing default when unset.



38
39
40
# File 'lib/odin/utils/security_limits.rb', line 38

def self.max_expression_depth
  env_int("MAX_EXPRESSION_DEPTH", MAX_EXPRESSION_DEPTH)
end

.max_transform_fuelObject

Transform fuel budget; 0 = unbounded.



28
29
30
# File 'lib/odin/utils/security_limits.rb', line 28

def self.max_transform_fuel
  env_int("MAX_TRANSFORM_FUEL", 0)
end

.transform_timeout_msObject

Transform wall-clock timeout in milliseconds; 0 = unbounded.



33
34
35
# File 'lib/odin/utils/security_limits.rb', line 33

def self.transform_timeout_ms
  env_int("TRANSFORM_TIMEOUT_MS", 0)
end