libddwaf 1.7.0.0.0-aarch64-linux → 1.8.2.0.0-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: '0879136025596a905f82dbcaf22a6b3c09ad9d9b7dea1ed49ab7e9b14bfefad2'
4
- data.tar.gz: 2b54253c18c9b522685936daa6eebdf57e13e59006bc902beaa4af8efd28119a
3
+ metadata.gz: cb7937e1315eaa2f2f7133a0278fe8284aa3862566b6b58597a3e42d5700ead5
4
+ data.tar.gz: f65955292f406d2bd62a4b67f6482b81ab2b6c86d72fdad8942ef08fec0dd9fa
5
5
  SHA512:
6
- metadata.gz: 493c4412b53886a7a71d8a4188ff6d0b84a95e3cdae5b10501fca26927081f96e434c63dc48bb422b7eedcfd7b4eb453628e1baee09a52a6604532a882c90e22
7
- data.tar.gz: edfc34aa12fd7b325ebc07e8544b3dfdd5ed55e0554648a25042d3d9cb64641fe3013654b7f4147455be2234dded84bdd9ab472ea75e61844863d3f3e04dd930
6
+ metadata.gz: b2e83f6faad45458d9ea6812b7151760d19e6916415823b2f365c74345754d6f61c3d53c7549fd89e6eddac4e8170cf6221aaea0dc70c07680c040a44c8e839d
7
+ data.tar.gz: 1d4cea5c6f7beebee36fbf32340ed85c91b1b9d28051b61fa56479fc0e34822cd5206b4e5d3e0bfe9034b85d7f12580c1eb02012feee328fc9b997c03aabc1b6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 2023-03-03 v1.8.2.0.0
2
+
3
+ - Update to libddwaf 1.8.2
4
+ - Added Waf::Handle#merge method
5
+ - Remove Waf::Handle#update_rule_data and Waf::Handle#toggle_rules methods
6
+ - Remove WAF::LibDDWAF.ddwaf_required_rule_data_ids method
7
+
1
8
  # 2023-02-03 v1.7.0.0.0
2
9
 
3
10
  - Update to libddwaf 1.7.0
@@ -2,7 +2,7 @@ module Datadog
2
2
  module AppSec
3
3
  module WAF
4
4
  module VERSION
5
- BASE_STRING = '1.7.0'
5
+ BASE_STRING = '1.8.2'
6
6
  STRING = "#{BASE_STRING}.0.0"
7
7
  MINIMUM_RUBY_VERSION = '2.1'
8
8
  end
@@ -228,10 +228,10 @@ module Datadog
228
228
  attach_function :ddwaf_ruleset_info_free, [:ddwaf_ruleset_info], :void
229
229
 
230
230
  attach_function :ddwaf_init, [:ddwaf_rule, :ddwaf_config, :ddwaf_ruleset_info], :ddwaf_handle
231
+ attach_function :ddwaf_update, [:ddwaf_handle, :ddwaf_object, :ddwaf_ruleset_info], :ddwaf_handle
231
232
  attach_function :ddwaf_destroy, [:ddwaf_handle], :void
232
233
 
233
234
  attach_function :ddwaf_required_addresses, [:ddwaf_handle, UInt32Ptr], :charptrptr
234
- attach_function :ddwaf_required_rule_data_ids, [:ddwaf_handle, UInt32Ptr], :charptrptr
235
235
 
236
236
  # updating
237
237
 
@@ -242,9 +242,6 @@ module Datadog
242
242
  :ddwaf_match, 1
243
243
  typedef DDWAF_RET_CODE, :ddwaf_ret_code
244
244
 
245
- attach_function :ddwaf_update_rule_data, [:ddwaf_handle, :ddwaf_object], :ddwaf_ret_code
246
- attach_function :ddwaf_toggle_rules, [:ddwaf_handle, :ddwaf_object], :ddwaf_ret_code
247
-
248
245
  # running
249
246
 
250
247
  typedef :pointer, :ddwaf_context
@@ -478,9 +475,7 @@ module Datadog
478
475
  }
479
476
 
480
477
  class Handle
481
- attr_reader :handle_obj
482
-
483
- attr_reader :ruleset_info
478
+ attr_reader :handle_obj, :ruleset_info, :config
484
479
 
485
480
  def initialize(rule, limits: {}, obfuscator: {})
486
481
  rule_obj = Datadog::AppSec::WAF.ruby_to_object(rule)
@@ -492,7 +487,6 @@ module Datadog
492
487
  if config_obj.null?
493
488
  fail LibDDWAF::Error, 'Could not create config struct'
494
489
  end
495
- retain(config_obj)
496
490
 
497
491
  config_obj[:limits][:max_container_size] = limits[:max_container_size] || LibDDWAF::DEFAULT_MAX_CONTAINER_SIZE
498
492
  config_obj[:limits][:max_container_depth] = limits[:max_container_depth] || LibDDWAF::DEFAULT_MAX_CONTAINER_DEPTH
@@ -501,6 +495,8 @@ module Datadog
501
495
  config_obj[:obfuscator][:value_regex] = FFI::MemoryPointer.from_string(obfuscator[:value_regex]) if obfuscator[:value_regex]
502
496
  config_obj[:free_fn] = Datadog::AppSec::WAF::LibDDWAF::ObjectNoFree
503
497
 
498
+ @config = config_obj
499
+
504
500
  ruleset_info = LibDDWAF::RuleSetInfo.new
505
501
 
506
502
  @handle_obj = Datadog::AppSec::WAF::LibDDWAF.ddwaf_init(rule_obj, config_obj, ruleset_info)
@@ -539,26 +535,35 @@ module Datadog
539
535
  list.get_array_of_string(0, count[:value])
540
536
  end
541
537
 
542
- def update_rule_data(data)
538
+ def merge(data)
543
539
  data_obj = Datadog::AppSec::WAF.ruby_to_object(data, coerce: false)
544
- res = Datadog::AppSec::WAF::LibDDWAF.ddwaf_update_rule_data(@handle_obj, data_obj)
540
+ ruleset_info = LibDDWAF::RuleSetInfo.new
541
+ new_handle = Datadog::AppSec::WAF::LibDDWAF.ddwaf_update(handle_obj, data_obj, ruleset_info)
545
542
 
546
- RESULT_CODE[res]
543
+ return if new_handle.null?
544
+
545
+ info = {
546
+ loaded: ruleset_info[:loaded],
547
+ failed: ruleset_info[:failed],
548
+ errors: WAF.object_to_ruby(ruleset_info[:errors]),
549
+ version: ruleset_info[:version],
550
+ }
551
+ new_from_handle(new_handle, info, config)
547
552
  ensure
548
553
  Datadog::AppSec::WAF::LibDDWAF.ddwaf_object_free(data_obj) if data_obj
554
+ Datadog::AppSec::WAF::LibDDWAF.ddwaf_ruleset_info_free(ruleset_info) if ruleset_info
549
555
  end
550
556
 
551
- def toggle_rules(map)
552
- map_obj = Datadog::AppSec::WAF.ruby_to_object(map, coerce: false)
553
- res = Datadog::AppSec::WAF::LibDDWAF.ddwaf_toggle_rules(@handle_obj, map_obj)
557
+ private
554
558
 
555
- RESULT_CODE[res]
556
- ensure
557
- Datadog::AppSec::WAF::LibDDWAF.ddwaf_object_free(map_obj) if map_obj
559
+ def new_from_handle(handle_object, info, config)
560
+ obj = self.class.allocate
561
+ obj.instance_variable_set(:@handle_obj, handle_object)
562
+ obj.instance_variable_set(:@ruleset_info, info)
563
+ obj.instance_variable_set(:@config, config)
564
+ obj
558
565
  end
559
566
 
560
- private
561
-
562
567
  def validate!
563
568
  @valid = true
564
569
  end
@@ -576,18 +581,6 @@ module Datadog
576
581
 
577
582
  fail LibDDWAF::Error, "Attempt to use an invalid instance: #{inspect}"
578
583
  end
579
-
580
- def retained
581
- @retained ||= []
582
- end
583
-
584
- def retain(object)
585
- retained << object
586
- end
587
-
588
- def release(object)
589
- retained.delete(object)
590
- end
591
584
  end
592
585
 
593
586
  class Result
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.7.0.0.0
4
+ version: 1.8.2.0.0
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: 2023-03-02 00:00:00.000000000 Z
11
+ date: 2023-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -42,7 +42,7 @@ files:
42
42
  - lib/datadog/appsec/waf.rb
43
43
  - lib/datadog/appsec/waf/version.rb
44
44
  - lib/libddwaf.rb
45
- - vendor/libddwaf/libddwaf-1.7.0-linux-aarch64/lib/libddwaf.so
45
+ - vendor/libddwaf/libddwaf-1.8.2-linux-aarch64/lib/libddwaf.so
46
46
  homepage: https://github.com/DataDog/libddwaf-rb
47
47
  licenses:
48
48
  - BSD-3-Clause