You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suricata/rust
Victor Julien fd4c197f45 app-layer/http2: add a transaction state for the trailer block
An HTTP/2 stream puts its trailers in a HEADERS block after the body.
There was no state for it, so detection had nothing to hook: the block
was merged into the header buffers, where the header state had already
been declared complete. gRPC streams, which always end with such a
block, could not be matched at all.

Add HTTP2ProgTrailers between the data and the closed state, and mark
the frames of a trailer block. Marking keys on the header section having
completed in that direction, not on the progress value and not on body
data: RFC 9113 permits a trailer section behind a message that sent no
DATA frames at all. A second block that only follows an informational
response is not a trailer, so a to-client block completes the header
section only with a non-1xx :status, and a CONTINUATION takes the
classification of the block it continues, not the state the direction
reached since.

A state inserted into a shipped protocol defaults to drop:flow in
firewall mode, which would block every stream that has trailers the
moment this builds. So a parser can now describe its sub-states fully -
completion state and the built-in policy of each state - instead of
AppLayerParserGetSubStateCompletion guessing from hard coded numbers.
The trailer states register accept:hook, so behaviour only changes for
deployments that opt in; the generic drop:flow still applies to the
states the protocol has always had.

Ticket: #8256.
5 days ago
..
.cargo rust: rename .cargo/config to .cargo/config.toml 2 years ago
derive doc: string enum derive has a function listing the enum values 3 weeks ago
ffi rust/ffi: add flow accessors to flow wrapper 2 months ago
htp htp: keep trailer fields out of the header table 5 days ago
src app-layer/http2: add a transaction state for the trailer block 5 days ago
suricatactl rust: limit clap verson to 4.5.57 7 months ago
suricatasc rust: clippy fixups for 1.97 4 months ago
sys app-layer/http2: add a transaction state for the trailer block 5 days ago
.gitignore rust: rename .cargo/config to .cargo/config.toml 2 years ago
Cargo.lock.in psl: update to 2.1.241 1 week ago
Cargo.toml.in rust: add zstd dependency 1 month ago
Makefile.am rust: fail check-bindgen-bindings if bindgen fails 3 weeks ago
cbindgen.toml http2: split transaction state machines 4 months ago
rustfmt.toml rustfmt: replace deprecated fn_args_layout with fn_params_layout 3 years ago