libddwaf 1.3.0.0.0.beta1-aarch64-linux → 1.3.0.1.0.beta1-aarch64-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a988d3a03098a355583ff7222a64805d454699820d6a132c5b154a4a27576796
4
- data.tar.gz: ea7b4a8200bca321337dfb4725537c64471d2fb72a9a87211c08a20c84d6a0f9
3
+ metadata.gz: ac32125f2aa6f6632a5b8e6bab87f6e37ffb8248da2d0c0f59abe95eeb3eb765
4
+ data.tar.gz: e702dadb52d3aa9e0aa8be62417a71db815afdf4f27aa1966cd06ed7b364b6b0
5
5
  SHA512:
6
- metadata.gz: d04d8a56bb401b4256e86d4b5b9fa383b8c476c32d82f84569d7fd38c690ac73dd102c965483567c907a044f07e8cafa850b4d2cfe46e0e7688527bc82a60df9
7
- data.tar.gz: c6688b5112236f7cca6ded0efeeef085c7754655f2b707d2bfd601fdedae9b7e0e23e8eba224bd64ea0bcc1880d8d886636eee4896d1b93c5b1b23b5e65e83fc
6
+ metadata.gz: a15ea409175ce2616dab6a851ac1a4e6d8264c483006680af3e04562753ed5ecbb722fed1bf406b95a02a049e77936d4d3d9b1c8b41d2c28c560aad640e0c28e
7
+ data.tar.gz: cb9a77becb1fdf0c66aa78cf0a7fdadaf22c3afccafc9eb79fa6ee21a815f29e16c6340cc23381ebb46a47f2fc7623dee736a70202d452208b7878bdc424ee0d
@@ -3,7 +3,7 @@ module Datadog
3
3
  module WAF
4
4
  module VERSION
5
5
  BASE_STRING = '1.3.0'
6
- STRING = "#{BASE_STRING}.0.0.beta1"
6
+ STRING = "#{BASE_STRING}.1.0.beta1"
7
7
  MINIMUM_RUBY_VERSION = '2.1'
8
8
  end
9
9
  end
@@ -6,7 +6,13 @@ module Datadog
6
6
  module AppSec
7
7
  module WAF
8
8
  module LibDDWAF
9
- class Error < StandardError; end
9
+ class Error < StandardError
10
+ attr_reader :ruleset_info
11
+
12
+ def initialize(msg, ruleset_info: nil)
13
+ @ruleset_info = ruleset_info
14
+ end
15
+ end
10
16
 
11
17
  extend ::FFI::Library
12
18
 
@@ -158,8 +164,8 @@ module Datadog
158
164
  end
159
165
 
160
166
  class Obfuscator < ::FFI::Struct
161
- layout :key_regex, :string,
162
- :value_regex, :string
167
+ layout :key_regex, :pointer, # :charptr
168
+ :value_regex, :pointer # :charptr
163
169
  end
164
170
 
165
171
  layout :limits, Limits,
@@ -183,7 +189,7 @@ module Datadog
183
189
  attach_function :ddwaf_init, [:ddwaf_rule, :ddwaf_config, :ddwaf_ruleset_info], :ddwaf_handle
184
190
  attach_function :ddwaf_destroy, [:ddwaf_handle], :void
185
191
 
186
- attach_function :ddwaf_required_addresses, [:ddwaf_handle, :uint32ptr], :charptrptr
192
+ attach_function :ddwaf_required_addresses, [:ddwaf_handle, UInt32Ptr], :charptrptr
187
193
 
188
194
  # running
189
195
 
@@ -354,7 +360,9 @@ module Datadog
354
360
  DEFAULT_MAX_CONTAINER_DEPTH = 0
355
361
  DEFAULT_MAX_STRING_LENGTH = 0
356
362
 
357
- def initialize(rule, config = {})
363
+ attr_reader :ruleset_info
364
+
365
+ def initialize(rule, limits: {}, obfuscator: {})
358
366
  rule_obj = Datadog::AppSec::WAF.ruby_to_object(rule)
359
367
  if rule_obj.null? || rule_obj[:type] == :ddwaf_object_invalid
360
368
  fail LibDDWAF::Error, "Could not convert object #{rule.inspect}"
@@ -365,15 +373,25 @@ module Datadog
365
373
  fail LibDDWAF::Error, 'Could not create config struct'
366
374
  end
367
375
 
368
- config_obj[:limits][:max_container_size] = config[:max_container_size] || DEFAULT_MAX_CONTAINER_SIZE
369
- config_obj[:limits][:max_container_depth] = config[:max_container_depth] || DEFAULT_MAX_CONTAINER_DEPTH
370
- config_obj[:limits][:max_string_length] = config[:max_string_length] || DEFAULT_MAX_STRING_LENGTH
376
+ config_obj[:limits][:max_container_size] = limits[:max_container_size] || DEFAULT_MAX_CONTAINER_SIZE
377
+ config_obj[:limits][:max_container_depth] = limits[:max_container_depth] || DEFAULT_MAX_CONTAINER_DEPTH
378
+ config_obj[:limits][:max_string_length] = limits[:max_string_length] || DEFAULT_MAX_STRING_LENGTH
379
+ config_obj[:obfuscator][:key_regex] = FFI::MemoryPointer.from_string(obfuscator[:key_regex]) if obfuscator[:key_regex]
380
+ config_obj[:obfuscator][:value_regex] = FFI::MemoryPointer.from_string(obfuscator[:value_regex]) if obfuscator[:value_regex]
371
381
 
372
- ruleset_info = LibDDWAF::RuleSetInfoNone
382
+ ruleset_info = LibDDWAF::RuleSetInfo.new
373
383
 
374
384
  @handle_obj = Datadog::AppSec::WAF::LibDDWAF.ddwaf_init(rule_obj, config_obj, ruleset_info)
385
+
386
+ @ruleset_info = {
387
+ loaded: ruleset_info[:loaded],
388
+ failed: ruleset_info[:failed],
389
+ errors: WAF.object_to_ruby(ruleset_info[:errors]),
390
+ version: ruleset_info[:version],
391
+ }
392
+
375
393
  if @handle_obj.null?
376
- fail LibDDWAF::Error, 'Could not create handle'
394
+ fail LibDDWAF::Error.new('Could not create handle', ruleset_info: @ruleset_info)
377
395
  end
378
396
 
379
397
  ObjectSpace.define_finalizer(self, Handle.finalizer(handle_obj))
@@ -387,6 +405,15 @@ module Datadog
387
405
  Datadog::AppSec::WAF::LibDDWAF.ddwaf_destroy(handle_obj)
388
406
  end
389
407
  end
408
+
409
+ def required_addresses
410
+ count = Datadog::AppSec::WAF::LibDDWAF::UInt32Ptr.new
411
+ list = Datadog::AppSec::WAF::LibDDWAF.ddwaf_required_addresses(handle_obj, count)
412
+
413
+ return [] if count == 0 # list is null
414
+
415
+ list.get_array_of_string(0, count[:value])
416
+ end
390
417
  end
391
418
 
392
419
  Result = Struct.new(:action, :data, :total_runtime, :timeout)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libddwaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0.0.0.beta1
4
+ version: 1.3.0.1.0.beta1
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-20 00:00:00.000000000 Z
11
+ date: 2022-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi