libddwaf 1.11.0.0.0-x86_64-linux → 1.14.0.0.0-x86_64-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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a712684416b659823d5e354c74addbab710836cd497c5cf160d7a48b71672bda
|
4
|
+
data.tar.gz: e617739271e5ddc172a409c802efc3e7e7e6de4cdf74a2a564c4e405282c12cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42e31ad097ace06cb0ed746ce3d56964b3a3278d77fef2c5a5361bb5575ed81b05fd78ffaef56394a68e0b87e2f16498c422119cc27dead9b8f9450939a40f65
|
7
|
+
data.tar.gz: 4f14a7e9a94e8e22fc19f9755e05d604a97324a5c4c02459abc64961c7cf0d9d7996a8b1da86de48935ffd85219cf9e7dff488d0e7f1af51738fdb5904ea4473
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
+
# 2023-09-11 v.1.14.0.0.0
|
2
|
+
- Update to libddwaf 1.14.0
|
3
|
+
- Add support for `Float` and `Nil` scalar values when converting from ruby to WAF Object and vice versa.
|
4
|
+
|
5
|
+
|
1
6
|
# 2023-08-29 v.1.11.0.0.0
|
2
7
|
|
3
8
|
- Update to libddwaf 1.11.0
|
4
|
-
-
|
5
|
-
The schema of the
|
9
|
+
- Changed `Datadog::AppSec::WAF::Handle#ruleset_info` to `Datadog::AppSec::WAF::Handle#diagnostics``. (Breaking change)
|
10
|
+
The schema of the diagnostics variable can be found [here](https://github.com/DataDog/libddwaf/blob/master/schema/diagnostics.json)
|
11
|
+
- Changed `Datadog::AppSec::WAF::Result#data` to `Datadog::AppSec::WAF::Result#events`. (Breaking change)
|
12
|
+
The schema of the events variable can be found [here](https://github.com/DataDog/libddwaf/blob/master/schema/events.json)
|
6
13
|
|
7
14
|
|
8
15
|
# 2023-08-28 v.1.10.0.0.0
|
data/lib/datadog/appsec/waf.rb
CHANGED
@@ -111,7 +111,10 @@ module Datadog
|
|
111
111
|
:ddwaf_obj_string, 1 << 2,
|
112
112
|
:ddwaf_obj_array, 1 << 3,
|
113
113
|
:ddwaf_obj_map, 1 << 4,
|
114
|
-
:ddwaf_obj_bool, 1 << 5
|
114
|
+
:ddwaf_obj_bool, 1 << 5,
|
115
|
+
:ddwaf_obj_float, 1 << 6,
|
116
|
+
:ddwaf_obj_null, 1 << 7
|
117
|
+
|
115
118
|
typedef DDWAF_OBJ_TYPE, :ddwaf_obj_type
|
116
119
|
|
117
120
|
typedef :pointer, :charptr
|
@@ -140,7 +143,8 @@ module Datadog
|
|
140
143
|
:uintValue, :uint64,
|
141
144
|
:intValue, :int64,
|
142
145
|
:array, :pointer,
|
143
|
-
:boolean, :bool
|
146
|
+
:boolean, :bool,
|
147
|
+
:f64, :double
|
144
148
|
end
|
145
149
|
|
146
150
|
class Object < ::FFI::Struct
|
@@ -159,11 +163,13 @@ module Datadog
|
|
159
163
|
attach_function :ddwaf_object_string, [:ddwaf_object, :string], :ddwaf_object
|
160
164
|
attach_function :ddwaf_object_stringl, [:ddwaf_object, :charptr, :size_t], :ddwaf_object
|
161
165
|
attach_function :ddwaf_object_stringl_nc, [:ddwaf_object, :charptr, :size_t], :ddwaf_object
|
166
|
+
attach_function :ddwaf_object_string_from_unsigned, [:ddwaf_object, :uint64], :ddwaf_object
|
167
|
+
attach_function :ddwaf_object_string_from_signed, [:ddwaf_object, :int64], :ddwaf_object
|
162
168
|
attach_function :ddwaf_object_unsigned, [:ddwaf_object, :uint64], :ddwaf_object
|
163
169
|
attach_function :ddwaf_object_signed, [:ddwaf_object, :int64], :ddwaf_object
|
164
|
-
attach_function :ddwaf_object_unsigned_force, [:ddwaf_object, :uint64], :ddwaf_object
|
165
|
-
attach_function :ddwaf_object_signed_force, [:ddwaf_object, :int64], :ddwaf_object
|
166
170
|
attach_function :ddwaf_object_bool, [:ddwaf_object, :bool], :ddwaf_object
|
171
|
+
attach_function :ddwaf_object_null, [:ddwaf_object], :ddwaf_object
|
172
|
+
attach_function :ddwaf_object_float, [:ddwaf_object, :double], :ddwaf_object
|
167
173
|
|
168
174
|
attach_function :ddwaf_object_array, [:ddwaf_object], :ddwaf_object
|
169
175
|
attach_function :ddwaf_object_array_add, [:ddwaf_object, :ddwaf_object], :bool
|
@@ -184,6 +190,7 @@ module Datadog
|
|
184
190
|
attach_function :ddwaf_object_get_signed, [:ddwaf_object], :int64
|
185
191
|
attach_function :ddwaf_object_get_index, [:ddwaf_object, :size_t], :ddwaf_object
|
186
192
|
attach_function :ddwaf_object_get_bool, [:ddwaf_object], :bool
|
193
|
+
attach_function :ddwaf_object_get_float, [:ddwaf_object], :double
|
187
194
|
|
188
195
|
## freeers
|
189
196
|
|
@@ -239,10 +246,11 @@ module Datadog
|
|
239
246
|
attach_function :ddwaf_context_destroy, [:ddwaf_context], :void
|
240
247
|
|
241
248
|
class Result < ::FFI::Struct
|
242
|
-
layout :timeout,
|
243
|
-
:events,
|
244
|
-
:actions,
|
245
|
-
:
|
249
|
+
layout :timeout, :bool,
|
250
|
+
:events, Object,
|
251
|
+
:actions, Object,
|
252
|
+
:derivatives, Object,
|
253
|
+
:total_runtime, :uint64
|
246
254
|
end
|
247
255
|
|
248
256
|
typedef Result.by_ref, :ddwaf_result
|
@@ -280,7 +288,7 @@ module Datadog
|
|
280
288
|
LibDDWAF.ddwaf_get_version
|
281
289
|
end
|
282
290
|
|
283
|
-
# rubocop:disable Metrics/MethodLength
|
291
|
+
# rubocop:disable Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
284
292
|
def self.ruby_to_object(val, max_container_size: nil, max_container_depth: nil, max_string_length: nil, coerce: true)
|
285
293
|
case val
|
286
294
|
when Array
|
@@ -358,9 +366,9 @@ module Datadog
|
|
358
366
|
res = if coerce
|
359
367
|
LibDDWAF.ddwaf_object_string(obj, val.to_s)
|
360
368
|
elsif val < 0
|
361
|
-
LibDDWAF.
|
369
|
+
LibDDWAF.ddwaf_object_signed(obj, val)
|
362
370
|
else
|
363
|
-
LibDDWAF.
|
371
|
+
LibDDWAF.ddwaf_object_unsigned(obj, val)
|
364
372
|
end
|
365
373
|
if res.null?
|
366
374
|
fail LibDDWAF::Error, "Could not convert into object: #{val.inspect}"
|
@@ -369,7 +377,11 @@ module Datadog
|
|
369
377
|
obj
|
370
378
|
when Float
|
371
379
|
obj = LibDDWAF::Object.new
|
372
|
-
res =
|
380
|
+
res = if coerce
|
381
|
+
LibDDWAF.ddwaf_object_string(obj, val.to_s)
|
382
|
+
else
|
383
|
+
LibDDWAF.ddwaf_object_float(obj, val)
|
384
|
+
end
|
373
385
|
if res.null?
|
374
386
|
fail LibDDWAF::Error, "Could not convert into object: #{val.inspect}"
|
375
387
|
end
|
@@ -386,16 +398,28 @@ module Datadog
|
|
386
398
|
fail LibDDWAF::Error, "Could not convert into object: #{val.inspect}"
|
387
399
|
end
|
388
400
|
|
401
|
+
obj
|
402
|
+
when NilClass
|
403
|
+
obj = LibDDWAF::Object.new
|
404
|
+
res = if coerce
|
405
|
+
LibDDWAF.ddwaf_object_string(obj, '')
|
406
|
+
else
|
407
|
+
LibDDWAF.ddwaf_object_null(obj)
|
408
|
+
end
|
409
|
+
if res.null?
|
410
|
+
fail LibDDWAF::Error, "Could not convert into object: #{val.inspect}"
|
411
|
+
end
|
412
|
+
|
389
413
|
obj
|
390
414
|
else
|
391
415
|
ruby_to_object(''.freeze)
|
392
416
|
end
|
393
417
|
end
|
394
|
-
# rubocop:enable Metrics/MethodLength
|
418
|
+
# rubocop:enable Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
395
419
|
|
396
420
|
def self.object_to_ruby(obj)
|
397
421
|
case obj[:type]
|
398
|
-
when :ddwaf_obj_invalid
|
422
|
+
when :ddwaf_obj_invalid, :ddwaf_obj_null
|
399
423
|
nil
|
400
424
|
when :ddwaf_obj_bool
|
401
425
|
obj[:valueUnion][:boolean]
|
@@ -405,6 +429,8 @@ module Datadog
|
|
405
429
|
obj[:valueUnion][:intValue]
|
406
430
|
when :ddwaf_obj_unsigned
|
407
431
|
obj[:valueUnion][:uintValue]
|
432
|
+
when :ddwaf_obj_float
|
433
|
+
obj[:valueUnion][:f64]
|
408
434
|
when :ddwaf_obj_array
|
409
435
|
(0...obj[:nbEntries]).each.with_object([]) do |i, a|
|
410
436
|
ptr = obj[:valueUnion][:array] + i * LibDDWAF::Object.size
|
@@ -561,14 +587,15 @@ module Datadog
|
|
561
587
|
end
|
562
588
|
|
563
589
|
class Result
|
564
|
-
attr_reader :status, :events, :total_runtime, :timeout, :actions
|
590
|
+
attr_reader :status, :events, :total_runtime, :timeout, :actions, :derivatives
|
565
591
|
|
566
|
-
def initialize(status, events, total_runtime, timeout, actions)
|
592
|
+
def initialize(status, events, total_runtime, timeout, actions, derivatives)
|
567
593
|
@status = status
|
568
594
|
@events = events
|
569
595
|
@total_runtime = total_runtime
|
570
596
|
@timeout = timeout
|
571
597
|
@actions = actions
|
598
|
+
@derivatives = derivatives
|
572
599
|
end
|
573
600
|
end
|
574
601
|
|
@@ -609,7 +636,8 @@ module Datadog
|
|
609
636
|
input_obj = Datadog::AppSec::WAF.ruby_to_object(input,
|
610
637
|
max_container_size: max_container_size,
|
611
638
|
max_container_depth: max_container_depth,
|
612
|
-
max_string_length: max_string_length
|
639
|
+
max_string_length: max_string_length,
|
640
|
+
coerce: false)
|
613
641
|
if input_obj.null?
|
614
642
|
fail LibDDWAF::Error, "Could not convert input: #{input.inspect}"
|
615
643
|
end
|
@@ -630,6 +658,7 @@ module Datadog
|
|
630
658
|
result_obj[:total_runtime],
|
631
659
|
result_obj[:timeout],
|
632
660
|
Datadog::AppSec::WAF.object_to_ruby(result_obj[:actions]),
|
661
|
+
Datadog::AppSec::WAF.object_to_ruby(result_obj[:derivatives]),
|
633
662
|
)
|
634
663
|
|
635
664
|
[RESULT_CODE[code], result]
|
Binary file
|
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.
|
4
|
+
version: 1.14.0.0.0
|
5
5
|
platform: x86_64-linux
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-13 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.
|
45
|
+
- vendor/libddwaf/libddwaf-1.14.0-linux-x86_64/lib/libddwaf.so
|
46
46
|
homepage: https://github.com/DataDog/libddwaf-rb
|
47
47
|
licenses:
|
48
48
|
- BSD-3-Clause
|
Binary file
|