libddwaf 1.0.12.0.0.beta1-arm64-darwin → 1.0.14.1.0.beta2-arm64-darwin

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d70b2edd22fb80213b0641b198218dd199ad5a99d96088ac3957c2986cb68eee
4
- data.tar.gz: 85e3dba0be12b138124b2f80e53e12ebe6dfb2c110cbcc697f505e8d50d21354
3
+ metadata.gz: 1d5fae533d4c8a9ec811840df19ba277b114e6e66c8489de3db2ac84dd2d2177
4
+ data.tar.gz: f916b256e8d34ed876c070c3f3517eae457346c088532a4e845228b77a79bb8b
5
5
  SHA512:
6
- metadata.gz: ea9c170ab64410a4de81e2522ff1f5b2a59b7e9ed4557cf71e1034fdd6b37d76483efc78713cb1684bf7e1d19a37bd53fbc5b4d9a0c1345898381ea93b3f4bbf
7
- data.tar.gz: 114f33f5789decc71ffbf073d5cf12635209465c173832680f9064ff1ebd53bf120dd2a243bf6d02a8aab60e86911b1c5afb8da491141d8538dc1eb54d1861fd
6
+ metadata.gz: '0925b525d354135edf5e2dddf4bb002a130d6180529fdd7af04e1f2f15c1f364068b7fcf6ed4f6994541d953054491d485ca403c038e0aa0cd4e48d0c8647689'
7
+ data.tar.gz: 7d3a36e9fefc8ca3c45298e589692a10f5a3d943a5ec3e83c985eb148058a57e4df4bc7a3587b20b7ccf5e8e7a7fe0c50527c88130f84763d0e8a66380e62224
@@ -2,10 +2,9 @@ module Datadog
2
2
  module Security
3
3
  module WAF
4
4
  module VERSION
5
- BASE_STRING = '1.0.12'
6
- STRING = "#{BASE_STRING}.0.0.beta1"
5
+ BASE_STRING = '1.0.14'
6
+ STRING = "#{BASE_STRING}.1.0.beta2"
7
7
  MINIMUM_RUBY_VERSION = '2.1'
8
- MAXIMUM_RUBY_VERSION = '3.1'
9
8
  end
10
9
  end
11
10
  end
@@ -15,10 +15,10 @@ module Datadog
15
15
  os_name = java.lang.System.get_property('os.name')
16
16
 
17
17
  os = case os_name
18
- when /linux/i then 'linux'
19
- when /mac/i then 'darwin'
20
- else raise Error, "unsupported JRuby os.name: #{os_name.inspect}"
21
- end
18
+ when /linux/i then 'linux'
19
+ when /mac/i then 'darwin'
20
+ else raise Error, "unsupported JRuby os.name: #{os_name.inspect}"
21
+ end
22
22
 
23
23
  return os
24
24
  end
@@ -55,8 +55,8 @@ module Datadog
55
55
 
56
56
  class Version < ::FFI::Struct
57
57
  layout :major, :uint16,
58
- :minor, :uint16,
59
- :patch, :uint16
58
+ :minor, :uint16,
59
+ :patch, :uint16
60
60
  end
61
61
 
62
62
  typedef Version.by_ref, :ddwaf_version
@@ -76,17 +76,17 @@ module Datadog
76
76
 
77
77
  class ObjectValueUnion < ::FFI::Union
78
78
  layout :stringValue, :charptr,
79
- :uintValue, :uint64,
80
- :intValue, :int64,
81
- :array, :pointer
79
+ :uintValue, :uint64,
80
+ :intValue, :int64,
81
+ :array, :pointer
82
82
  end
83
83
 
84
84
  class Object < ::FFI::Struct
85
85
  layout :parameterName, :charptr,
86
- :parameterNameLength, :uint64,
87
- :valueUnion, ObjectValueUnion,
88
- :nbEntries, :uint64,
89
- :type, DDWAF_OBJ_TYPE
86
+ :parameterNameLength, :uint64,
87
+ :valueUnion, ObjectValueUnion,
88
+ :nbEntries, :uint64,
89
+ :type, DDWAF_OBJ_TYPE
90
90
  end
91
91
 
92
92
  typedef Object.by_ref, :ddwaf_object
@@ -118,8 +118,8 @@ module Datadog
118
118
 
119
119
  class Config < ::FFI::Struct
120
120
  layout :maxArrayLength, :uint64,
121
- :maxMapDepth, :uint64,
122
- :maxTimeStore, :uint64
121
+ :maxMapDepth, :uint64,
122
+ :maxTimeStore, :uint64
123
123
  end
124
124
 
125
125
  typedef Config.by_ref, :ddwaf_config
@@ -127,6 +127,8 @@ module Datadog
127
127
  attach_function :ddwaf_init, [:ddwaf_rule, :ddwaf_config], :ddwaf_handle
128
128
  attach_function :ddwaf_destroy, [:ddwaf_handle], :void
129
129
 
130
+ attach_function :ddwaf_required_addresses, [:ddwaf_handle, :pointer], :pointer
131
+
130
132
  # running
131
133
 
132
134
  typedef :pointer, :ddwaf_context
@@ -136,7 +138,6 @@ module Datadog
136
138
  attach_function :ddwaf_context_init, [:ddwaf_handle, :ddwaf_object_free_fn], :ddwaf_context
137
139
  attach_function :ddwaf_context_destroy, [:ddwaf_context], :void
138
140
 
139
-
140
141
  DDWAF_RET_CODE = enum :ddwaf_err_internal, -4,
141
142
  :ddwaf_err_invalid_object, -3,
142
143
  :ddwaf_err_invalid_argument, -2,
@@ -147,9 +148,9 @@ module Datadog
147
148
 
148
149
  class Result < ::FFI::Struct
149
150
  layout :action, DDWAF_RET_CODE,
150
- :data, :string,
151
- :perfData, :string,
152
- :perfTotalRuntime, :uint32 # in us
151
+ :data, :string,
152
+ :perfData, :string,
153
+ :perfTotalRuntime, :uint32 # in us
153
154
  end
154
155
 
155
156
  typedef Result.by_ref, :ddwaf_result
@@ -161,11 +162,11 @@ module Datadog
161
162
  # logging
162
163
 
163
164
  DDWAF_LOG_LEVEL = enum :ddwaf_log_trace,
164
- :ddwaf_log_debug,
165
- :ddwaf_log_info,
166
- :ddwaf_log_warn,
167
- :ddwaf_log_error,
168
- :ddwaf_log_off
165
+ :ddwaf_log_debug,
166
+ :ddwaf_log_info,
167
+ :ddwaf_log_warn,
168
+ :ddwaf_log_error,
169
+ :ddwaf_log_off
169
170
 
170
171
  callback :ddwaf_log_cb, [DDWAF_LOG_LEVEL, :string, :string, :uint, :charptr, :uint64], :void
171
172
 
@@ -351,11 +352,16 @@ module Datadog
351
352
  fail LibDDWAF::Error, 'Could not create context'
352
353
  end
353
354
 
354
- ObjectSpace.define_finalizer(self, Context.finalizer(context_obj))
355
+ @input_objs = []
356
+
357
+ ObjectSpace.define_finalizer(self, Context.finalizer(context_obj, @input_objs))
355
358
  end
356
359
 
357
- def self.finalizer(context_obj)
360
+ def self.finalizer(context_obj, input_objs)
358
361
  proc do |object_id|
362
+ input_objs.each do |input_obj|
363
+ Datadog::Security::WAF::LibDDWAF.ddwaf_object_free(input_obj)
364
+ end
359
365
  Datadog::Security::WAF::LibDDWAF.ddwaf_context_destroy(context_obj)
360
366
  end
361
367
  end
@@ -382,6 +388,9 @@ module Datadog
382
388
  fail LibDDWAF::Error, "Could not create result object"
383
389
  end
384
390
 
391
+ # retain C objects in memory for subsequent calls to run
392
+ @input_objs << input_obj
393
+
385
394
  code = Datadog::Security::WAF::LibDDWAF.ddwaf_run(@context_obj, input_obj, result_obj, timeout)
386
395
 
387
396
  result = Result.new(
@@ -393,7 +402,6 @@ module Datadog
393
402
 
394
403
  [ACTION_MAP_OUT[code], result]
395
404
  ensure
396
- Datadog::Security::WAF::LibDDWAF.ddwaf_object_free(input_obj) if input_obj
397
405
  Datadog::Security::WAF::LibDDWAF.ddwaf_result_free(result_obj) if result_obj
398
406
  end
399
407
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libddwaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12.0.0.beta1
4
+ version: 1.0.14.1.0.beta2
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-13 00:00:00.000000000 Z
11
+ date: 2022-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.0'
27
27
  description: 'libddwaf packages a WAF implementation in C++, exposed to Ruby
28
28
 
29
29
  '
@@ -41,8 +41,8 @@ files:
41
41
  - lib/datadog/security/waf.rb
42
42
  - lib/datadog/security/waf/version.rb
43
43
  - lib/libddwaf.rb
44
- - vendor/libddwaf/libddwaf-1.0.12-darwin-arm64/include/ddwaf.h
45
- - vendor/libddwaf/libddwaf-1.0.12-darwin-arm64/lib/libddwaf.dylib
44
+ - vendor/libddwaf/libddwaf-1.0.14-darwin-arm64/include/ddwaf.h
45
+ - vendor/libddwaf/libddwaf-1.0.14-darwin-arm64/lib/libddwaf.dylib
46
46
  homepage: https://github.com/DataDog/libddwaf
47
47
  licenses:
48
48
  - BSD-3-Clause
@@ -57,16 +57,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: '2.1'
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '3.1'
63
60
  required_rubygems_version: !ruby/object:Gem::Requirement
64
61
  requirements:
65
62
  - - ">="
66
63
  - !ruby/object:Gem::Version
67
64
  version: 2.0.0
68
65
  requirements: []
69
- rubygems_version: 3.2.28
66
+ rubygems_version: 3.2.33
70
67
  signing_key:
71
68
  specification_version: 4
72
69
  summary: Datadog WAF