libddwaf 1.0.14.2.0.beta1-aarch64-linux → 1.3.0.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: 8b387562cafa65f9d01386a42622bcdfda376c868510182206f0e843dfd06a5a
4
- data.tar.gz: 25648d371d1d43c453d23ee3c2ce033247264328dc62e7ce20a3d5178ca7e1f6
3
+ metadata.gz: d36ab16a6085f508f571b49bda3ad382c88acf63db4c0ed56bf0d7b6495c2df4
4
+ data.tar.gz: 7c97139eef2c5ee0463792f1a5380834e765375224236c47aaa21dd5a6cb168d
5
5
  SHA512:
6
- metadata.gz: 057ef862414df6b69b010d4e55dbcf1f5c2eefb58e09402c4e7ae3f23354f2dcfd2dc3ff90e0a67e1944e6d2b6cacda976f4dfc65f5bd211caad0e68a371399b
7
- data.tar.gz: b725e8a01133f6647d1bf4f8f9ad83bcaa86a409555273787d5852cb36f1fc1b0a22fd14dd996a94c83db9a89546765b09d0d850fb36428c5931edebc6a104c1
6
+ metadata.gz: 4ed077f60be0bb2a21b2596c4d09a03af8266a0c842c3e4bcd1f3828c5f7e869fc1986420aca092e3f0c391679d0342375fb36dbf40940d39076fbd2664cd113
7
+ data.tar.gz: fd41d908ef210f06014eb467664a0d681abc4be4a959630924bfed75a23253a7704ba7b59d22b29c33c91a8508b54e74774048de5929ab8abade64fc625d2342
@@ -2,8 +2,8 @@ module Datadog
2
2
  module AppSec
3
3
  module WAF
4
4
  module VERSION
5
- BASE_STRING = '1.0.14'
6
- STRING = "#{BASE_STRING}.2.0.beta1"
5
+ BASE_STRING = '1.3.0'
6
+ STRING = "#{BASE_STRING}.0.0"
7
7
  MINIMUM_RUBY_VERSION = '2.1'
8
8
  end
9
9
  end
@@ -73,6 +73,25 @@ module Datadog
73
73
  :ddwaf_obj_map, 1 << 4
74
74
 
75
75
  typedef :pointer, :charptr
76
+ typedef :pointer, :charptrptr
77
+
78
+ class UInt32Ptr < ::FFI::Struct
79
+ layout :value, :uint32
80
+ end
81
+
82
+ typedef UInt32Ptr.by_ref, :uint32ptr
83
+
84
+ class UInt64Ptr < ::FFI::Struct
85
+ layout :value, :uint64
86
+ end
87
+
88
+ typedef UInt64Ptr.by_ref, :uint64ptr
89
+
90
+ class SizeTPtr < ::FFI::Struct
91
+ layout :value, :size_t
92
+ end
93
+
94
+ typedef SizeTPtr.by_ref, :sizeptr
76
95
 
77
96
  class ObjectValueUnion < ::FFI::Union
78
97
  layout :stringValue, :charptr,
@@ -91,6 +110,8 @@ module Datadog
91
110
 
92
111
  typedef Object.by_ref, :ddwaf_object
93
112
 
113
+ ## setters
114
+
94
115
  attach_function :ddwaf_object_invalid, [:ddwaf_object], :ddwaf_object
95
116
  attach_function :ddwaf_object_string, [:ddwaf_object, :string], :ddwaf_object
96
117
  attach_function :ddwaf_object_stringl, [:ddwaf_object, :charptr, :size_t], :ddwaf_object
@@ -108,6 +129,19 @@ module Datadog
108
129
  attach_function :ddwaf_object_map_addl, [:ddwaf_object, :charptr, :size_t, :pointer], :bool
109
130
  attach_function :ddwaf_object_map_addl_nc, [:ddwaf_object, :charptr, :size_t, :pointer], :bool
110
131
 
132
+ ## getters
133
+
134
+ attach_function :ddwaf_object_type, [:ddwaf_object], DDWAF_OBJ_TYPE
135
+ attach_function :ddwaf_object_size, [:ddwaf_object], :uint64
136
+ attach_function :ddwaf_object_length, [:ddwaf_object], :size_t
137
+ attach_function :ddwaf_object_get_key, [:ddwaf_object, :sizeptr], :charptr
138
+ attach_function :ddwaf_object_get_string, [:ddwaf_object, :sizeptr], :charptr
139
+ attach_function :ddwaf_object_get_unsigned, [:ddwaf_object], :uint64
140
+ attach_function :ddwaf_object_get_signed, [:ddwaf_object], :int64
141
+ attach_function :ddwaf_object_get_index, [:ddwaf_object, :size_t], :ddwaf_object
142
+
143
+ ## freeers
144
+
111
145
  ObjectFree = attach_function :ddwaf_object_free, [:ddwaf_object], :void
112
146
  ObjectNoFree = ::FFI::Pointer::NULL
113
147
 
@@ -117,17 +151,39 @@ module Datadog
117
151
  typedef Object.by_ref, :ddwaf_rule
118
152
 
119
153
  class Config < ::FFI::Struct
120
- layout :maxArrayLength, :uint64,
121
- :maxMapDepth, :uint64,
122
- :maxTimeStore, :uint64
154
+ class Limits < ::FFI::Struct
155
+ layout :max_container_size, :uint32,
156
+ :max_container_depth, :uint32,
157
+ :max_string_length, :uint32
158
+ end
159
+
160
+ class Obfuscator < ::FFI::Struct
161
+ layout :key_regex, :string,
162
+ :value_regex, :string
163
+ end
164
+
165
+ layout :limits, Limits,
166
+ :obfuscator, Obfuscator
123
167
  end
124
168
 
125
169
  typedef Config.by_ref, :ddwaf_config
126
170
 
127
- attach_function :ddwaf_init, [:ddwaf_rule, :ddwaf_config], :ddwaf_handle
171
+ class RuleSetInfo < ::FFI::Struct
172
+ layout :loaded, :uint16,
173
+ :failed, :uint16,
174
+ :errors, Object,
175
+ :version, :string
176
+ end
177
+
178
+ typedef RuleSetInfo.by_ref, :ddwaf_ruleset_info
179
+ RuleSetInfoNone = Datadog::AppSec::WAF::LibDDWAF::RuleSetInfo.new(::FFI::Pointer::NULL)
180
+
181
+ attach_function :ddwaf_ruleset_info_free, [:ddwaf_ruleset_info], :void
182
+
183
+ attach_function :ddwaf_init, [:ddwaf_rule, :ddwaf_config, :ddwaf_ruleset_info], :ddwaf_handle
128
184
  attach_function :ddwaf_destroy, [:ddwaf_handle], :void
129
185
 
130
- attach_function :ddwaf_required_addresses, [:ddwaf_handle, :pointer], :pointer
186
+ attach_function :ddwaf_required_addresses, [:ddwaf_handle, :uint32ptr], :charptrptr
131
187
 
132
188
  # running
133
189
 
@@ -138,19 +194,17 @@ module Datadog
138
194
  attach_function :ddwaf_context_init, [:ddwaf_handle, :ddwaf_object_free_fn], :ddwaf_context
139
195
  attach_function :ddwaf_context_destroy, [:ddwaf_context], :void
140
196
 
141
- DDWAF_RET_CODE = enum :ddwaf_err_internal, -4,
142
- :ddwaf_err_invalid_object, -3,
143
- :ddwaf_err_invalid_argument, -2,
144
- :ddwaf_err_timeout, -1,
197
+ DDWAF_RET_CODE = enum :ddwaf_err_internal, -3,
198
+ :ddwaf_err_invalid_object, -2,
199
+ :ddwaf_err_invalid_argument, -1,
145
200
  :ddwaf_good, 0,
146
201
  :ddwaf_monitor, 1,
147
202
  :ddwaf_block, 2
148
203
 
149
204
  class Result < ::FFI::Struct
150
- layout :action, DDWAF_RET_CODE,
205
+ layout :timeout, :bool,
151
206
  :data, :string,
152
- :perfData, :string,
153
- :perfTotalRuntime, :uint32 # in us
207
+ :total_runtime, :uint64
154
208
  end
155
209
 
156
210
  typedef Result.by_ref, :ddwaf_result
@@ -253,13 +307,7 @@ module Datadog
253
307
 
254
308
  obj
255
309
  else
256
- obj = LibDDWAF::Object.new
257
- res = LibDDWAF.ddwaf_object_invalid(obj)
258
- if res.null?
259
- fail LibDDWAF::Error, "Could not convert into object: #{val}"
260
- end
261
-
262
- obj
310
+ ruby_to_object(''.freeze)
263
311
  end
264
312
  end
265
313
 
@@ -293,7 +341,7 @@ module Datadog
293
341
 
294
342
  def self.logger=(logger)
295
343
  @log_cb = proc do |level, func, file, line, message, len|
296
- logger.debug { { level: level, func: func, file: file, message: message.read_bytes(len) }.inspect }
344
+ logger.debug { { level: level, func: func, file: file, line: line, message: message.read_bytes(len) }.inspect }
297
345
  end
298
346
 
299
347
  Datadog::AppSec::WAF::LibDDWAF.ddwaf_set_log_cb(@log_cb, :ddwaf_log_trace)
@@ -302,9 +350,9 @@ module Datadog
302
350
  class Handle
303
351
  attr_reader :handle_obj
304
352
 
305
- DEFAULT_MAX_ARRAY_LENGTH = 0
306
- DEFAULT_MAX_MAP_DEPTH = 0
307
- DEFAULT_MAX_TIME_STORE = 0
353
+ DEFAULT_MAX_CONTAINER_SIZE = 0
354
+ DEFAULT_MAX_CONTAINER_DEPTH = 0
355
+ DEFAULT_MAX_STRING_LENGTH = 0
308
356
 
309
357
  def initialize(rule, config = {})
310
358
  rule_obj = Datadog::AppSec::WAF.ruby_to_object(rule)
@@ -317,17 +365,20 @@ module Datadog
317
365
  fail LibDDWAF::Error, 'Could not create config struct'
318
366
  end
319
367
 
320
- config_obj[:maxArrayLength] = config[:max_array_length] || DEFAULT_MAX_ARRAY_LENGTH
321
- config_obj[:maxMapDepth] = config[:max_map_depth] || DEFAULT_MAX_MAP_DEPTH
322
- config_obj[:maxTimeStore] = config[:max_time_store] || DEFAULT_MAX_TIME_STORE
368
+ config_obj[:limits][:max_container_size] = config[:max_container_size] || DEFAULT_MAX_CONTAINER_SIZE
369
+ config_obj[:limits][:max_container_depth] = config[:max_container_depth] || DEFAULT_MAX_CONTAINER_DEPTH
370
+ config_obj[:limits][:max_string_length] = config[:max_string_length] || DEFAULT_MAX_STRING_LENGTH
371
+
372
+ ruleset_info = LibDDWAF::RuleSetInfoNone
323
373
 
324
- @handle_obj = Datadog::AppSec::WAF::LibDDWAF.ddwaf_init(rule_obj, config_obj)
374
+ @handle_obj = Datadog::AppSec::WAF::LibDDWAF.ddwaf_init(rule_obj, config_obj, ruleset_info)
325
375
  if @handle_obj.null?
326
376
  fail LibDDWAF::Error, 'Could not create handle'
327
377
  end
328
378
 
329
379
  ObjectSpace.define_finalizer(self, Handle.finalizer(handle_obj))
330
380
  ensure
381
+ Datadog::AppSec::WAF::LibDDWAF.ddwaf_ruleset_info_free(ruleset_info) if ruleset_info
331
382
  Datadog::AppSec::WAF::LibDDWAF.ddwaf_object_free(rule_obj) if rule_obj
332
383
  end
333
384
 
@@ -338,7 +389,7 @@ module Datadog
338
389
  end
339
390
  end
340
391
 
341
- Result = Struct.new(:action, :data, :perf_data, :perf_total_runtime)
392
+ Result = Struct.new(:action, :data, :total_runtime, :timeout)
342
393
 
343
394
  class Context
344
395
  attr_reader :context_obj
@@ -371,7 +422,6 @@ module Datadog
371
422
  ddwaf_err_internal: :err_internal,
372
423
  ddwaf_err_invalid_object: :err_invalid_object,
373
424
  ddwaf_err_invalid_argument: :err_invalid_argument,
374
- ddwaf_err_timeout: :err_invalid_object,
375
425
  ddwaf_good: :good,
376
426
  ddwaf_monitor: :monitor,
377
427
  ddwaf_block: :block,
@@ -394,10 +444,10 @@ module Datadog
394
444
  code = Datadog::AppSec::WAF::LibDDWAF.ddwaf_run(@context_obj, input_obj, result_obj, timeout)
395
445
 
396
446
  result = Result.new(
397
- ACTION_MAP_OUT[result_obj[:action]],
447
+ ACTION_MAP_OUT[code],
398
448
  (JSON.parse(result_obj[:data]) if result_obj[:data] != nil),
399
- (JSON.parse(result_obj[:perfData]) if result_obj[:perfData] != nil),
400
- result_obj[:perfTotalRuntime],
449
+ result_obj[:total_runtime],
450
+ result_obj[:timeout],
401
451
  )
402
452
 
403
453
  [ACTION_MAP_OUT[code], result]
@@ -17,8 +17,8 @@ extern "C"
17
17
  #include <stddef.h>
18
18
 
19
19
  #define DDWAF_MAX_STRING_LENGTH 4096
20
- #define DDWAF_MAX_MAP_DEPTH 20
21
- #define DDWAF_MAX_ARRAY_LENGTH 256
20
+ #define DDWAF_MAX_CONTAINER_DEPTH 20
21
+ #define DDWAF_MAX_CONTAINER_SIZE 256
22
22
  #define DDWAF_RUN_TIMEOUT 5000
23
23
 
24
24
  /**
@@ -48,10 +48,9 @@ typedef enum
48
48
  **/
49
49
  typedef enum
50
50
  {
51
- DDWAF_ERR_INTERNAL = -4,
52
- DDWAF_ERR_INVALID_OBJECT = -3,
53
- DDWAF_ERR_INVALID_ARGUMENT = -2,
54
- DDWAF_ERR_TIMEOUT = -1,
51
+ DDWAF_ERR_INTERNAL = -3,
52
+ DDWAF_ERR_INVALID_OBJECT = -2,
53
+ DDWAF_ERR_INVALID_ARGUMENT = -1,
55
54
  DDWAF_GOOD = 0,
56
55
  DDWAF_MONITOR = 1,
57
56
  DDWAF_BLOCK = 2
@@ -72,13 +71,21 @@ typedef enum
72
71
  DDWAF_LOG_OFF,
73
72
  } DDWAF_LOG_LEVEL;
74
73
 
74
+ #ifdef __cplusplus
75
+ class PowerWAF;
76
+ class PWAdditive;
77
+ using ddwaf_handle = PowerWAF *;
78
+ using ddwaf_context = PWAdditive *;
79
+ #else
75
80
  typedef struct _ddwaf_handle* ddwaf_handle;
76
81
  typedef struct _ddwaf_context* ddwaf_context;
82
+ #endif
83
+
77
84
  typedef struct _ddwaf_object ddwaf_object;
78
85
  typedef struct _ddwaf_config ddwaf_config;
79
86
  typedef struct _ddwaf_result ddwaf_result;
80
87
  typedef struct _ddwaf_version ddwaf_version;
81
-
88
+ typedef struct _ddwaf_ruleset_info ddwaf_ruleset_info;
82
89
  /**
83
90
  * @struct ddwaf_object
84
91
  *
@@ -94,7 +101,7 @@ struct _ddwaf_object
94
101
  const char* stringValue;
95
102
  uint64_t uintValue;
96
103
  int64_t intValue;
97
- const ddwaf_object* array;
104
+ ddwaf_object* array;
98
105
  };
99
106
  uint64_t nbEntries;
100
107
  DDWAF_OBJ_TYPE type;
@@ -107,12 +114,22 @@ struct _ddwaf_object
107
114
  **/
108
115
  struct _ddwaf_config
109
116
  {
110
- /** Maximum length of ddwaf::object arrays. */
111
- uint64_t maxArrayLength;
112
- /** Maximum depth of ddwaf::object maps. */
113
- uint64_t maxMapDepth;
114
- /** Maximum size of the rule run time store. **/
115
- int32_t maxTimeStore;
117
+ struct {
118
+ /** Maximum size of ddwaf::object containers. */
119
+ uint32_t max_container_size;
120
+ /** Maximum depth of ddwaf::object containers. */
121
+ uint32_t max_container_depth;
122
+ /** Maximum length of ddwaf::object strings. */
123
+ uint32_t max_string_length;
124
+ } limits;
125
+
126
+ /** Obfuscator regexes - the strings are owned by the caller */
127
+ struct {
128
+ /** Regular expression for key-based obfuscation */
129
+ const char *key_regex;
130
+ /** Regular expression for value-based obfuscation */
131
+ const char *value_regex;
132
+ } obfuscator;
116
133
  };
117
134
 
118
135
  /**
@@ -122,14 +139,12 @@ struct _ddwaf_config
122
139
  **/
123
140
  struct _ddwaf_result
124
141
  {
125
- /** Run result action **/
126
- DDWAF_RET_CODE action;
142
+ /** Whether there has been a timeout during the operation **/
143
+ bool timeout;
127
144
  /** Run result in JSON format **/
128
145
  const char* data;
129
- /** Performance data in JSON format **/
130
- const char* perfData;
131
- /** Total run time in microseconds **/
132
- uint32_t perfTotalRuntime;
146
+ /** Total WAF runtime in nanoseconds **/
147
+ uint64_t total_runtime;
133
148
  };
134
149
 
135
150
  /**
@@ -144,6 +159,24 @@ struct _ddwaf_version
144
159
  uint16_t patch;
145
160
  };
146
161
 
162
+ /**
163
+ * @ddwaf_ruleset_info
164
+ *
165
+ * Structure containing diagnostics on the provided ruleset.
166
+ * */
167
+ struct _ddwaf_ruleset_info
168
+ {
169
+ /** Number of rules successfully loaded **/
170
+ uint16_t loaded;
171
+ /** Number of rules which failed to parse **/
172
+ uint16_t failed;
173
+ /** Map from an error string to an array of all the rule ids for which
174
+ * that error was raised. {error: [rule_ids]} **/
175
+ ddwaf_object errors;
176
+ /** Ruleset version **/
177
+ const char *version;
178
+ };
179
+
147
180
  /**
148
181
  * @typedef ddwaf_object_free_fn
149
182
  *
@@ -174,10 +207,12 @@ typedef void (*ddwaf_log_cb)(
174
207
  *
175
208
  * @param rule ddwaf::object containing the patterns to be used by the WAF. (nonnull)
176
209
  * @param config Optional configuration of the WAF. (nullable)
210
+ * @param info Optional ruleset parsing diagnostics. (nullable)
177
211
  *
178
212
  * @return Handle to the WAF instance.
179
213
  **/
180
- ddwaf_handle ddwaf_init(const ddwaf_object *rule, const ddwaf_config* config);
214
+ ddwaf_handle ddwaf_init(const ddwaf_object *rule,
215
+ const ddwaf_config* config, ddwaf_ruleset_info *info);
181
216
 
182
217
  /**
183
218
  * ddwaf_destroy
@@ -187,7 +222,14 @@ ddwaf_handle ddwaf_init(const ddwaf_object *rule, const ddwaf_config* config);
187
222
  * @param Handle to the WAF instance.
188
223
  */
189
224
  void ddwaf_destroy(ddwaf_handle handle);
190
-
225
+ /**
226
+ * ddwaf_ruleset_info_free
227
+ *
228
+ * Free the memory associated with the ruleset info structure.
229
+ *
230
+ * @param info Ruleset info to free.
231
+ * */
232
+ void ddwaf_ruleset_info_free(ddwaf_ruleset_info *info);
191
233
  /**
192
234
  * ddwaf_required_addresses
193
235
  *
@@ -248,7 +290,8 @@ ddwaf_context ddwaf_context_init(const ddwaf_handle handle, ddwaf_object_free_fn
248
290
  * data is unknown. The result structure will not be
249
291
  * filled if this error occurs.
250
292
  **/
251
- DDWAF_RET_CODE ddwaf_run(ddwaf_context context, ddwaf_object *data, ddwaf_result *result, uint64_t timeout);
293
+ DDWAF_RET_CODE ddwaf_run(ddwaf_context context, ddwaf_object *data,
294
+ ddwaf_result *result, uint64_t timeout);
252
295
 
253
296
  /**
254
297
  * ddwaf_context_destroy
@@ -451,6 +494,101 @@ bool ddwaf_object_map_addl(ddwaf_object *map, const char *key, size_t length, dd
451
494
  **/
452
495
  bool ddwaf_object_map_addl_nc(ddwaf_object *map, const char *key, size_t length, ddwaf_object *object);
453
496
 
497
+ /**
498
+ * ddwaf_object_type
499
+ *
500
+ * Returns the type of the object.
501
+ *
502
+ * @param object The object from which to get the type.
503
+ *
504
+ * @return The object type of DDWAF_OBJ_INVALID if NULL.
505
+ **/
506
+ DDWAF_OBJ_TYPE ddwaf_object_type(ddwaf_object *object);
507
+
508
+ /**
509
+ * ddwaf_object_size
510
+ *
511
+ * Returns the size of the container object.
512
+ *
513
+ * @param object The object from which to get the size.
514
+ *
515
+ * @return The object size or 0 if the object is not a container (array, map).
516
+ **/
517
+ size_t ddwaf_object_size(ddwaf_object *object);
518
+
519
+ /**
520
+ * ddwaf_object_length
521
+ *
522
+ * Returns the length of the string object.
523
+ *
524
+ * @param object The object from which to get the length.
525
+ *
526
+ * @return The string length or 0 if the object is not a string.
527
+ **/
528
+ size_t ddwaf_object_length(ddwaf_object *object);
529
+
530
+ /**
531
+ * ddwaf_object_get_key
532
+ *
533
+ * Returns the key contained within the object.
534
+ *
535
+ * @param object The object from which to get the key.
536
+ * @param length Output parameter on which to return the length of the key,
537
+ * this parameter is optional / nullable.
538
+ *
539
+ * @return The key of the object or NULL if the object doesn't contain a key.
540
+ **/
541
+ const char* ddwaf_object_get_key(ddwaf_object *object, size_t *length);
542
+
543
+ /**
544
+ * ddwaf_object_get_string
545
+ *
546
+ * Returns the string contained within the object.
547
+ *
548
+ * @param object The object from which to get the string.
549
+ * @param length Output parameter on which to return the length of the string,
550
+ * this parameter is optional / nullable.
551
+ *
552
+ * @return The string of the object or NULL if the object is not a string.
553
+ **/
554
+ const char* ddwaf_object_get_string(ddwaf_object *object, size_t *length);
555
+
556
+ /**
557
+ * ddwaf_object_get_unsigned
558
+ *
559
+ * Returns the uint64 contained within the object.
560
+ *
561
+ * @param object The object from which to get the integer.
562
+ *
563
+ * @return The integer or 0 if the object is not an unsigned.
564
+ **/
565
+ uint64_t ddwaf_object_get_unsigned(ddwaf_object *object);
566
+
567
+ /**
568
+ * ddwaf_object_get_signed
569
+ *
570
+ * Returns the int64 contained within the object.
571
+ *
572
+ * @param object The object from which to get the integer.
573
+ *
574
+ * @return The integer or 0 if the object is not a signed.
575
+ **/
576
+ int64_t ddwaf_object_get_signed(ddwaf_object *object);
577
+
578
+ /**
579
+ * ddwaf_object_get_index
580
+ *
581
+ * Returns the object contained in the container at the given index.
582
+ *
583
+ * @param object The container from which to extract the object.
584
+ * @param index The position of the required object within the container.
585
+ *
586
+ * @return The requested object or NULL if the index is out of bounds or the
587
+ * object is not a container.
588
+ **/
589
+ ddwaf_object* ddwaf_object_get_index(ddwaf_object *object, size_t index);
590
+
591
+
454
592
  /**
455
593
  * ddwaf_object_free
456
594
  *
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.2.0.beta1
4
+ version: 1.3.0.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: 2022-02-07 00:00:00.000000000 Z
11
+ date: 2022-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -41,8 +41,8 @@ files:
41
41
  - lib/datadog/appsec/waf.rb
42
42
  - lib/datadog/appsec/waf/version.rb
43
43
  - lib/libddwaf.rb
44
- - vendor/libddwaf/libddwaf-1.0.14-linux-aarch64/include/ddwaf.h
45
- - vendor/libddwaf/libddwaf-1.0.14-linux-aarch64/lib/libddwaf.so
44
+ - vendor/libddwaf/libddwaf-1.3.0-linux-aarch64/include/ddwaf.h
45
+ - vendor/libddwaf/libddwaf-1.3.0-linux-aarch64/lib/libddwaf.so
46
46
  homepage: https://github.com/DataDog/libddwaf
47
47
  licenses:
48
48
  - BSD-3-Clause