libddwaf 1.0.14.0.0.beta1 → 1.0.14.1.0.beta1

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: ebdf5c079523d9e668834bbda6291645bd2fed56049b75a12480a3c8ca7263d1
4
- data.tar.gz: 9d1514fdc5df95d52a1414b12c4615e55b0b176a8cc58eae9defd92d79a8fd07
3
+ metadata.gz: b9102fbbb384562ba050a80547ecd45ee2a39f08bd2c8c65d6fc9cd0d5a7b067
4
+ data.tar.gz: c5b00121032b40b06840dcfbf74a66d4ae766829f77d8f804adca3d4fc227094
5
5
  SHA512:
6
- metadata.gz: 30596b9909edddcfadad7f0ce652740012874347639660300c97dbf4a8fb6e0d818b9bfe6ad06d4b51e60f7a80243300ba8fa94a4cf18822eb5355bdcc389e74
7
- data.tar.gz: 5e20380afe7e14400e606cfcf11f02e71bced2f7cd0d77e759430beb299c00d4958d47a58b0bbffc4ec07434bac05b25dee67272371eeebf0b8b795bb69ff8f0
6
+ metadata.gz: 26d9c14c7673535b63eb66a72cf66b3360014df34ca1d2a87f92f41425c5a46a497040f4d4a67837889740dbf82ce2cb5c334555a0bc9c418ca73abfbe570863
7
+ data.tar.gz: a0f9e86ac0bd685e4387213e05e0f7d8e07bf78ae25a8b159c6a41bbf5fb97ebb51f2e90b753a5876b85ef906e2379d457fe0f0d80f2305a6169b997a0af508c
@@ -3,7 +3,7 @@ module Datadog
3
3
  module WAF
4
4
  module VERSION
5
5
  BASE_STRING = '1.0.14'
6
- STRING = "#{BASE_STRING}.0.0.beta1"
6
+ STRING = "#{BASE_STRING}.1.0.beta1"
7
7
  MINIMUM_RUBY_VERSION = '2.1'
8
8
  MAXIMUM_RUBY_VERSION = '3.2'
9
9
  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
@@ -136,7 +136,6 @@ module Datadog
136
136
  attach_function :ddwaf_context_init, [:ddwaf_handle, :ddwaf_object_free_fn], :ddwaf_context
137
137
  attach_function :ddwaf_context_destroy, [:ddwaf_context], :void
138
138
 
139
-
140
139
  DDWAF_RET_CODE = enum :ddwaf_err_internal, -4,
141
140
  :ddwaf_err_invalid_object, -3,
142
141
  :ddwaf_err_invalid_argument, -2,
@@ -147,9 +146,9 @@ module Datadog
147
146
 
148
147
  class Result < ::FFI::Struct
149
148
  layout :action, DDWAF_RET_CODE,
150
- :data, :string,
151
- :perfData, :string,
152
- :perfTotalRuntime, :uint32 # in us
149
+ :data, :string,
150
+ :perfData, :string,
151
+ :perfTotalRuntime, :uint32 # in us
153
152
  end
154
153
 
155
154
  typedef Result.by_ref, :ddwaf_result
@@ -161,11 +160,11 @@ module Datadog
161
160
  # logging
162
161
 
163
162
  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
163
+ :ddwaf_log_debug,
164
+ :ddwaf_log_info,
165
+ :ddwaf_log_warn,
166
+ :ddwaf_log_error,
167
+ :ddwaf_log_off
169
168
 
170
169
  callback :ddwaf_log_cb, [DDWAF_LOG_LEVEL, :string, :string, :uint, :charptr, :uint64], :void
171
170
 
@@ -351,11 +350,16 @@ module Datadog
351
350
  fail LibDDWAF::Error, 'Could not create context'
352
351
  end
353
352
 
354
- ObjectSpace.define_finalizer(self, Context.finalizer(context_obj))
353
+ @input_objs = []
354
+
355
+ ObjectSpace.define_finalizer(self, Context.finalizer(context_obj, @input_objs))
355
356
  end
356
357
 
357
- def self.finalizer(context_obj)
358
+ def self.finalizer(context_obj, input_objs)
358
359
  proc do |object_id|
360
+ input_objs.each do |input_obj|
361
+ Datadog::Security::WAF::LibDDWAF.ddwaf_object_free(input_obj)
362
+ end
359
363
  Datadog::Security::WAF::LibDDWAF.ddwaf_context_destroy(context_obj)
360
364
  end
361
365
  end
@@ -382,6 +386,9 @@ module Datadog
382
386
  fail LibDDWAF::Error, "Could not create result object"
383
387
  end
384
388
 
389
+ # retain C objects in memory for subsequent calls to run
390
+ @input_objs << input_obj
391
+
385
392
  code = Datadog::Security::WAF::LibDDWAF.ddwaf_run(@context_obj, input_obj, result_obj, timeout)
386
393
 
387
394
  result = Result.new(
@@ -393,7 +400,6 @@ module Datadog
393
400
 
394
401
  [ACTION_MAP_OUT[code], result]
395
402
  ensure
396
- Datadog::Security::WAF::LibDDWAF.ddwaf_object_free(input_obj) if input_obj
397
403
  Datadog::Security::WAF::LibDDWAF.ddwaf_result_free(result_obj) if result_obj
398
404
  end
399
405
  end
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.0.14.0.0.beta1
4
+ version: 1.0.14.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-23 00:00:00.000000000 Z
11
+ date: 2021-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi