libddwaf 1.24.1.1.1 → 1.24.1.2.0

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: bbd04c19c88c7ceb348c01428cc88c00cc8c2878cef060997b406ae8140abb11
4
- data.tar.gz: '06584c7e28bff66f5b4cdc794cadf4e3c542317bfabdae10757e9e9ed06b01b8'
3
+ metadata.gz: 89f452fa02268a1974c848112cd4e64f8edd8b554ac8213a11b9235b61d11b91
4
+ data.tar.gz: 1c0f9b2fb00537f199d987eeded1cfe1481f449c10e3aee3ac0b69505d2c3a75
5
5
  SHA512:
6
- metadata.gz: c640853ce7e66ea7f9debc63fc2479e2f50f9b71f22938b0198116703f1e4445c3157979e3a9f7d2a6cf76441ddfafb5fd1f1349a58f6071369430f3ac1f611f
7
- data.tar.gz: 27b2f091feb2bec8034d3fc545cec54680c946e97fd7f238638760cda6a71782eed29953100d362683e92fe2a23480dcfea7da60f5adeac8565da1da9e4b470e
6
+ metadata.gz: 6d91695b0420253dfd6084c2ac06cd88a88a3688bc252b811b43e25ad416a10607397498189e1a1c6c4416f8ee3960c0195dc387cd081b7b67efb2b28bbee978
7
+ data.tar.gz: a49843eb2c51806cc8d2f50aadbfce2440e0e9dcfd52a4c352f52106b1e26665577d7011c52cd87f48aa7ad206cb75e0299adfe6da19be1c7d7cececce85dcca
data/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Unreleased
2
2
 
3
+ # 2025-09-02 v1.24.1.2.0
4
+
3
5
  ## Added
4
6
 
5
7
  - Add `WAF::Result#input_truncated?` method that indicates that result is based on truncated input objects (see `LibDDWAF::Object#input_truncated?`)
@@ -83,7 +83,7 @@ module Datadog
83
83
  Converter.object_to_ruby(result_obj[:derivatives])
84
84
  )
85
85
 
86
- if persistent_data_obj.truncated? || ephemeral_data_obj.truncated?
86
+ if persistent_data_obj.input_truncated? || ephemeral_data_obj.input_truncated?
87
87
  result.mark_input_truncated!
88
88
  end
89
89
 
@@ -15,15 +15,11 @@ module Datadog
15
15
  res = LibDDWAF.ddwaf_object_array(obj)
16
16
  raise ConversionError, "Could not convert into object: #{val}" if res.null?
17
17
 
18
+ max_index = max_container_size - 1 if max_container_size
18
19
  if max_container_depth == 0
19
- top_obj&.mark_truncated!
20
+ top_obj&.mark_as_input_truncated!
20
21
  else
21
22
  val.each.with_index do |e, i|
22
- if max_container_size && i >= max_container_size
23
- (top_obj || obj).mark_truncated!
24
- break val
25
- end
26
-
27
23
  member = Converter.ruby_to_object(
28
24
  e,
29
25
  max_container_size: max_container_size,
@@ -34,6 +30,11 @@ module Datadog
34
30
  )
35
31
  e_res = LibDDWAF.ddwaf_object_array_add(obj, member)
36
32
  raise ConversionError, "Could not add to array object: #{e.inspect}" unless e_res
33
+
34
+ if max_index && i >= max_index
35
+ (top_obj || obj).mark_as_input_truncated!
36
+ break val
37
+ end
37
38
  end
38
39
  end
39
40
 
@@ -43,22 +44,18 @@ module Datadog
43
44
  res = LibDDWAF.ddwaf_object_map(obj)
44
45
  raise ConversionError, "Could not convert into object: #{val}" if res.null?
45
46
 
47
+ max_index = max_container_size - 1 if max_container_size
46
48
  if max_container_depth == 0
47
- top_obj&.mark_truncated!
49
+ top_obj&.mark_as_input_truncated!
48
50
  else
49
51
  val.each.with_index do |e, i|
50
- if max_container_size && i >= max_container_size
51
- (top_obj || obj).mark_truncated!
52
- break val
53
- end
54
-
55
52
  # for Steep, which doesn't handle |(k, v), i|
56
- k = e[0].to_s
53
+ k = e[0]
57
54
  v = e[1]
58
55
 
59
56
  if max_string_length && k.length > max_string_length
60
- k = k[0, max_string_length]
61
- (top_obj || obj).mark_truncated!
57
+ k = k.to_s[0, max_string_length]
58
+ (top_obj || obj).mark_as_input_truncated!
62
59
  end
63
60
  member = Converter.ruby_to_object(
64
61
  v,
@@ -68,8 +65,13 @@ module Datadog
68
65
  top_obj: top_obj || obj,
69
66
  coerce: coerce
70
67
  )
71
- kv_res = LibDDWAF.ddwaf_object_map_addl(obj, k, k.bytesize, member)
72
- raise ConversionError, "Could not add to map object: #{e[0].inspect} => #{v.inspect}" unless kv_res
68
+ kv_res = LibDDWAF.ddwaf_object_map_addl(obj, k.to_s, k.to_s.bytesize, member)
69
+ raise ConversionError, "Could not add to map object: #{k.inspect} => #{v.inspect}" unless kv_res
70
+
71
+ if max_index && i >= max_index
72
+ (top_obj || obj).mark_as_input_truncated!
73
+ break val
74
+ end
73
75
  end
74
76
  end
75
77
 
@@ -78,20 +80,21 @@ module Datadog
78
80
  obj = LibDDWAF::Object.new
79
81
  encoded_val = val.to_s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace)
80
82
  if max_string_length && encoded_val.length > max_string_length
81
- encoded_val = encoded_val[0, max_string_length] #: String
82
- (top_obj || obj).mark_truncated!
83
+ encoded_val = encoded_val[0, max_string_length]
84
+ (top_obj || obj).mark_as_input_truncated!
83
85
  end
84
- res = LibDDWAF.ddwaf_object_stringl(obj, encoded_val, encoded_val.bytesize)
86
+ str = encoded_val.to_s
87
+ res = LibDDWAF.ddwaf_object_stringl(obj, str, str.bytesize)
85
88
  raise ConversionError, "Could not convert into object: #{val.inspect}" if res.null?
86
89
 
87
90
  obj
88
91
  when Symbol
89
92
  obj = LibDDWAF::Object.new
90
- str = val.to_s
91
- if max_string_length && str.length > max_string_length
92
- str = str[0, max_string_length] #: String
93
- (top_obj || obj).mark_truncated!
93
+ if max_string_length
94
+ val = val.to_s[0, max_string_length]
95
+ (top_obj || obj).mark_as_input_truncated!
94
96
  end
97
+ str = val.to_s
95
98
  res = LibDDWAF.ddwaf_object_stringl(obj, str, str.bytesize)
96
99
  raise ConversionError, "Could not convert into object: #{val.inspect}" if res.null?
97
100
 
@@ -137,12 +137,12 @@ module Datadog
137
137
  :nbEntries, :uint64,
138
138
  :type, :ddwaf_obj_type
139
139
 
140
- def truncated?
141
- @truncated == true
140
+ def input_truncated?
141
+ @input_truncated == true
142
142
  end
143
143
 
144
- def mark_truncated!
145
- @truncated = true
144
+ def mark_as_input_truncated!
145
+ @input_truncated = true
146
146
  end
147
147
  end
148
148
 
@@ -5,7 +5,7 @@ module Datadog
5
5
  BASE_STRING = "1.24.1"
6
6
  # NOTE: Every change to the `BASE_STRING` should be accompanied
7
7
  # by a reset of the patch version in the `STRING` below.
8
- STRING = "#{BASE_STRING}.1.1"
8
+ STRING = "#{BASE_STRING}.2.0"
9
9
  MINIMUM_RUBY_VERSION = "2.5"
10
10
  end
11
11
  end
data/libddwaf.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ["dev@datadoghq.com"]
12
12
 
13
13
  spec.summary = "Datadog WAF"
14
- spec.description = <<-EOS.gsub(/^\s+/, "")
14
+ spec.description = <<-EOS.gsub(/^[\s]+/, "")
15
15
  libddwaf packages a WAF implementation in C++, exposed to Ruby
16
16
  EOS
17
17
 
@@ -58,9 +58,9 @@ module Datadog
58
58
  end
59
59
 
60
60
  class Object < ::FFI::Struct[::FFI::AbstractMemory, untyped]
61
- def truncated?: () -> bool
61
+ def input_truncated?: () -> bool
62
62
 
63
- def mark_truncated!: () -> bool
63
+ def mark_as_input_truncated!: () -> bool
64
64
  end
65
65
 
66
66
  # setters
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libddwaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.24.1.1.1
4
+ version: 1.24.1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 2025-09-16 00:00:00.000000000 Z
11
+ date: 2025-09-02 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: ffi
@@ -71,6 +72,7 @@ licenses:
71
72
  - BSD-3-Clause
72
73
  metadata:
73
74
  allowed_push_host: https://rubygems.org
75
+ post_install_message:
74
76
  rdoc_options: []
75
77
  require_paths:
76
78
  - lib
@@ -85,7 +87,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
87
  - !ruby/object:Gem::Version
86
88
  version: 2.0.0
87
89
  requirements: []
88
- rubygems_version: 3.6.2
90
+ rubygems_version: 3.5.21
91
+ signing_key:
89
92
  specification_version: 4
90
93
  summary: Datadog WAF
91
94
  test_files: []