Skip to content

Commit bbe9915

Browse files
authored
Release v1.28.0 (#447)
1 parent 1b2736a commit bbe9915

File tree

3 files changed

+72
-1
lines changed

3 files changed

+72
-1
lines changed

CHANGELOG.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,65 @@
11
# libddwaf release
22

3+
## v1.28.0 ([unstable](https://github.com/DataDog/libddwaf/blob/master/README.md#versioning-semantics))
4+
5+
### New Features
6+
7+
This release introduces a new URI-decomposition preprocessor along with enhancements to action parameter types, initialization performance, and platform support.
8+
9+
#### URI parsing preprocessor
10+
11+
A new `uri_parse` preprocessor has been introduced to convert a single URI into a structured map. URI decomposition follows [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986), with some additions from [WHATWG](https://url.spec.whatwg.org/) for compatibility. This preprocessor improves the ability of the rule writer to target specific URI components without the need for crafting complex and innacurate regular expressions.
12+
13+
An example definition of this preprocessor can be seen below:
14+
```yaml
15+
id: decompose-uri
16+
generator: uri_parse
17+
conditions: []
18+
parameters:
19+
mappings:
20+
- inputs:
21+
- address: server.request.uri.raw
22+
output: server.request.uri
23+
evaluate: true
24+
output: false
25+
```
26+
27+
After the evaluation of this example preprocessor `server.request.uri` will be available as a map containing the following fields:
28+
29+
```yaml
30+
{
31+
"scheme": <string>,
32+
"userinfo": <string>,
33+
"host": <string>,
34+
"port": <unsigned>,
35+
"path": <string>,
36+
"query": {},
37+
"fragment": <string>
38+
}
39+
```
40+
41+
#### Action parameters: broader scalar support
42+
43+
Action parameters can now include any of the available scalar types in addition to strings. This enables more natural configurations and prevents the need for ad‑hoc conversions by the WAF caller. This is a small, incremental improvement ahead of v2’s planned complex‑type support.
44+
45+
In addition to this change, the `status_code` field of the `block_request` and `redirect_request` actions, as well as the `grpc_status_code` field of the `block_request` action, are now being stored and interpreted as an unsigned integer, rather than a string.
46+
47+
#### Performance & Initialisation
48+
49+
Due to the static initialisation cost of tokenizer regular expressions, this is now deferred to the first ruleset instantiation. This avoids startup overhead and protects request latency from any one‑time initialization costs. No behavior changes are expected for existing rules.
50+
51+
#### Platforms & CI
52+
Continuous integration now builds and tests libddwaf on Windows ARM64, leveraging the windows-11-arm runners, this is an external contribution from [@Greenie0701](https://github.com/Greenie0701).
53+
54+
### Release changelog
55+
#### Changes
56+
- URI parsing preprocessor ([#439](https://github.com/DataDog/libddwaf/pull/439))
57+
- Support other scalar types on action parameters ([#441](https://github.com/DataDog/libddwaf/pull/441))
58+
- Load tokenizer regexes on first ruleset instantiation ([#446](https://github.com/DataDog/libddwaf/pull/446))
59+
60+
#### Miscellaneous
61+
- Add support for building and testing windows arm64 ([#440](https://github.com/DataDog/libddwaf/pull/440))
62+
363
## v1.27.0 ([unstable](https://github.com/DataDog/libddwaf/blob/master/README.md#versioning-semantics))
464

565
### New Features

UPGRADING.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Upgrading libddwaf
22

3+
## Upgrading from `1.27.x` to `1.28.0`
4+
5+
This new version of `libddwaf` introduces no breaking changes to the API / ABI , however it does change the returned type of the following actions parameters:
6+
7+
- Action type `block_request`:
8+
- `grpc_status_code` and `status_code` are now provided as unsigned integers (`uint64_t`) rather than strings.
9+
- Action type `redirect_request`:
10+
- `status_code` is now provided as an unsigned integer (`uint64_t`) rather than a string.
11+
12+
The type changes specified above do not depend on the original parameter type provided in configuration, as these status codes are converted and validated internally.
13+
314
## Upgrading from `1.24.x` to `1.25.0`
415

516
### Evaluation Result

version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.27.0
1+
1.28.0

0 commit comments

Comments
 (0)