Commit Graph

784 Commits (62d5cac1b8483d5f9d2b79833a4e59f5d80129b7)

Author SHA1 Message Date
Eric Leblond 6cb79d0721 ike: add TX orientation
Set no inspection in the opposite side of the transaction.

Ticket: #5799
4 years ago
Eric Leblond b1af87709f dns: add TX orientation
Set no inspection in the opposite side of the transaction.

Ticket: #5799
4 years ago
Eric Leblond 84cbdbf21f snmp: add TX orientation
Set no inspection in the opposite side of the transaction.

Ticket: #5799
4 years ago
Eric Leblond 4a3fdedc1f app-layer: add flag to skip detection on TX
Stamus team did discover a problem were a signature can shadow
other signatures.

For example, on a PCAP only containing Kerberos protocol and where the
following signature is matching:

alert krb5 $HOME_NET any -> any any (msg:"krb match"; krb5_cname; content:"marlo"; sid:3; rev:1;)

If we add the following signature to the list of signature

alert ssh $HOME_NET any -> any any (msg:"rr"; content:"rr"; flow:established,to_server; sid:4; rev:2;)

Then the Kerberos signature is not matching anymore.

To understand this case, we need some information:

- The krb5_cname is a to_client keyword
- The signal on ssh is to_server
- Kerberos has unidirectional transaction
- kerberos application state progress is a function always returning 1

As the two signatures are in opposite side, they end up in separate
sig group head.

Another fact is that, in the PCAP, the to_server side of the session
is sent first to the detection. It thus hit the sig group head of
the SSH signature. When Suricata runs detection in this direction
the Kerberos application layer send the transaction as it is existing
and because the alstate progress function just return 1 if the transaction
exists. So Suricata runs DetectRunTx() and stops when it sees that
sgh->tx_engines is NULL.

But the transaction is consumed by the engine as it has been evaluated
in one direction and the kerberos transaction are unidirectional so
there is no need to continue looking at it.

This results in no matching of the kerberos signature as the match
should occur in the evaluation of the other side but the transaction
with the data is already seen has been handled.

This problem was discovered on this Kerberos signature but all
the application layer with unidirectional transaction are impacted.

This patch introduces a flag that can be used by application layer
to signal that the TX should not be inspected. By using this flag
on the directional detect_flags_[ts|tc] the application layer can
prevent the TX to be consumed in the wrong direction.

Application layers with unidirectional TX will be updated
in separate commits to set the flag on the direction opposite
to the one they are.

Ticket: #5799
4 years ago
Jason Ish 2b02abfa75 rfb: remove duplicate logging of depth
The "depth" field in the "pixel_format" object was being logged twice.

Issue: 5813

(cherry picked from commit f15f092a69)
4 years ago
Jason Ish 0e0ce39190 smb: remove duplicate tree_id logging
Remove the second occurrence of tree_id logging which appears to
always be a duplicate of the first tree_id logged, even though they
come from different data structures.

Issue: 5811

(cherry picked from commit 67baab573b)
4 years ago
Philippe Antoine 70a4587a9b dns: remove unused events field from state
found overflowing by oss-fuzz

(cherry picked from commit 26dc70648c)
4 years ago
Philippe Antoine 95009e4411 smb: handles records with trailing nbss data
If a file (read/write) SMB record has padding/trailing data
after the buffer being read or written, and that Suricata falls
in one case where it skips the data, it should skip until
the very end of the NBSS record, meaning it should also skip the
padding/trailing data.

Otherwise, an attacker may smuggle some NBSS/SMB record in this
trailing data, that will be interpreted by Suricata, but not
by the SMB client/server, leading to evasions.

Ticket: #5786
(cherry picked from commit 233ab11148)
4 years ago
Philippe Antoine 0bf3ab9e6d smb: checks against nbss records length
When Suricata handles files over SMB, it does not wait for the
NBSS record to be complete, and can stream the payload to the
file... But it did not check the consistency of the SMB record
length being read or written against the NBSS record length.

This could lead to an evasion where an attacker crafts a SMB
write with a too big Length field, and then sends its evil
payload, even if the server returned an error for the write request.

Ticket: #5770
(cherry picked from commit c1b7befb18)
4 years ago
Victor Julien 6c7bdd7aca smb: set defaults for file transfer limits
Ticket: #5782.
(cherry picked from commit 37f13a4fc7)
4 years ago
Philippe Antoine fa4dedc1d4 nfs2: improve READ parsing
Inspired by commit ddf14e51dc

But keeping old nom version
4 years ago
Philippe Antoine ffb2e38ae0 smb/ntlmssp: parse fields independently of order
Instead of relying on the usual ordering...

Ticket: #5258
(cherry picked from commit 1db8685848)

Manual conflict fixes to use nom instead of nom7
4 years ago
Victor Julien ba4a533797 smb: fix post-trunc chunk behavior
After a gap in a file transaction, the file tracker is truncated. However
this did not clear any stored out of order chunks from memory or stop more
chunks to be stored, leading to accumulation of a large number of chunks.

This patches fixes this be clearing the stored chunks on trunc. It also
makes sure no more chunks are stored in the tracker after the trunc.

Bug: #5781.
(cherry picked from commit a24d7dc45c)
4 years ago
Philippe Antoine b5131da355 dcerpc: store consumed_bytes as i32
As it can grow bigger than u16

(cherry picked from commit 704bc878ea)
4 years ago
Jason Ish 6b6709c9d9 rust: fix for loop over option
As of Rust 1.66 with strict mode enabled, a for loop over an option is
now an error. Replace the last occurrence of this pattern with an "if
let" statement.
4 years ago
Philippe Antoine 938597691c nfs4: fix write record handling
Ticket: #5280
(cherry picked from commit 95f0424423)
4 years ago
Victor Julien d607c9295b smb: fix file reopening issue
Fuzzing highlighted an issue where a command sequence on the same file
id triggered a logging issue:

file data for id N
close id N
file data for id N

If this happened in a single blob of data passed to the parser, the
existing file tx would be reused, the file "reopened", confusing the
file logging logic. This would trigger a debug assert.

This patch makes sure a new file tx is created for the file data
coming in after the first file tx is closed.

Bug: #5567.
(cherry picked from commit 45eb038e63)
4 years ago
Philippe Antoine a567305240 dcerpc: fix integer underflow
as input.len() can be 65536, it cannot be directly cast to u16

Ticket: #5557
Ticket: #5602
4 years ago
Philippe Antoine 05509b52f6 smb: do not use tree id to match request and response
Completes commit e94920b49f

This must be true for access to state ssn2vecoffset_map

Ticket: #5161
4 years ago
Philippe Antoine d84eee39a8 smb: do not use tree id to match create request and response
As an SMB2 async response does not have a tree id, even if
the request has it.

Per spec, MessageId should be enough to identifiy a message request
and response uniquely across all messages that are sent on the same
SMB2 Protocol transport connection.
So, the tree id is redundant anyways.

Ticket: #5508
(cherry picked from commit e94920b49f)
4 years ago
Victor Julien acec24a816 rust/files: open file without trackid as pointer
(cherry picked from commit cade6046c5)
4 years ago
Victor Julien 304fd1796f rust/filecontainer: remove unused declaration
(cherry picked from commit ad869e1c52)
4 years ago
Philippe Antoine 0324a9b20b http2: fix decompression buffering
It was not enough to set Cursor position to 0,
also its inner Vec should be cleared.

This way, a new input gets written at the beginning of the
Cursor and its inner Vec...

Ticket: #5691
(cherry picked from commit 086b28da3d)
4 years ago
Philippe Antoine 9cc92b8dd5 http2: support padded data frames
Ticket: #5691
(cherry picked from commit c6349d3cfc)
4 years ago
Philippe Antoine 0ca12493e3 mime: handles multiple sections for a parameter
Ticket: 4386

as per RFC2231.
For instance filename can be split between filename*0,
filename*1, etc...

(cherry picked from commit 784558df2e)
4 years ago
Philippe Antoine 55781229d7 mime: move FindMimeHeaderTokenRestrict to rust
Also fixes the case where the token name is present
in a value

(cherry picked from commit 8feb9c35ae)
4 years ago
Philippe Antoine 40d1bb3422 mqtt: remove quadratic time complexity
When having many transactions in a single parsing call...

Fix has overhead of having one more field in the mqtt state.

Completes commit a8079dc978

Ticket: #5399
(cherry picked from commit e160917bcf)
4 years ago
Jeff Lucovsky ba37574ca5 mqtt: convert transaction list to vecdeque
Ticket: 5430
4 years ago
Philippe Antoine 18c616394e mqtt: make max transactions configurable
Allows users to find balance between completeness of decoding
and increases resource consumption, which can DOS suricata.

(cherry picked from commit e42094f238)
4 years ago
Philippe Antoine e029f80af2 mqtt: limits the number of active transactions per flow
Ticket: 4530

So, that we do not get DOS by quadratic complexity, while
looking for a new pkt_id over the ever growing list
of active transactions

(cherry picked from commit a8079dc978)
4 years ago
Philippe Antoine 16da02cfbd http2: remove to_vec for comparisons
Ticket: #5454
(cherry picked from commit 9b4a133777)

Conflict fixed by Philippe Antoine
4 years ago
Philippe Antoine eae0aadab8 http2: fix clippy warning about &Vec<u8>
Using &[u8] instead in function prototype

(cherry picked from commit d011b468da)

Conflict fixed by Philippe Antoine
4 years ago
Philippe Antoine ed15b0d6ab http2: check overflow before it happens
instead of checking afterwards if value got smaller

(cherry picked from commit b86beb9b68)

Manually adapted to make it work with MSRV
4 years ago
Jason Ish b8875d4a22 rust/nfs: add a maximum number of operations per compound
This is a backport of ea1d03f8e3 by Pierre
Chifflier adapted for 6.0.x.

> The `count` combinator preallocates a number of bytes. Since the value
> is untrusted, this can result in an Out Of Memory allocation.
> Use a maximum value, large enough to cover all current implementations.

Ticket: #5448
4 years ago
Jeff Lucovsky aa396f4f5e rust: Unused doc comment warning fixup
Since rustdoc does not generate documentation for extern blocks, Fedora
35 builds flagged 2 occurrences where doc comments existed on extern C
blocks.
4 years ago
Philippe Antoine 9bc690897a smb: ntlmssp domain_blob_offset underflow check
Ticket: 5246
(cherry picked from commit e72036f12f)
4 years ago
Philippe Antoine d80fbfd4c6 smb: check on param parsing
Ticket: 5246

so as not to overflow u16

(cherry picked from commit 817a5001a5)
4 years ago
Philippe Antoine dfe3da7765 rust: RustParser same fields as AppLayerParser
So that there is no problem when crossing FFI

(cherry picked from commit c78722a671)
4 years ago
Philippe Antoine 5924869f5d dcerpc: use wrappingadd for padding parsing
As we compute a modulo, we can safely wrap around even if there
is an overflow

Ticket: #5301
(cherry picked from commit d2f00ac824)
4 years ago
Jason Ish eeb8c17e0f dns: don't parse a full request during probe if not enough data
If there is more data than a header, but not enough for a complete DNS
message, the hostname parser could return an error causing the probe to
fail on valid DNS messages.

So only parse the complete message if we have enough input data. This is
reliable for TCP as DNS messages are prefixed, but for UDP its just
going to be the size of the input buffer presented to the parser, so
incomplete could still happen.

Ticket #5034

(cherry picked from commit 27679a12aa)
4 years ago
Jason Ish fa04c1bc57 dns: better error handling when parsing names
The DNS name parser will error out with an error even if the
error is incomplete. Instead of manually generating errors,
use '?' to let the nom error ripple up the error handling chain.

The reason this wasn't done in the first place is this code
predates the ? operator, or we were not aware of it at the time.

This prevents the case where probing fails when there is enough data to
parse the header, but not enough to complete name parser. In such a case
a parse error is returned (instead of incomplete) resulting in the
payload not being detected as DNS.

Ticket #5034

(cherry picked from commit 0623ada24d)
4 years ago
Jason Ish 947cb09e5b smb: protocol detection on pattern without midstream
To recognize a protocol, Suricata first looks for
patterns, which can be confirmed by a probing parser.
If this does not work, Suricata can try to run
some probing parsers on some ports.

This is the case for SMB.

This commit makes handling the confirming and the probing
paser differently even if they share much code.

The confirmation parser knows that a pattern has been found.
So, it must not do the midstream case of looking for this
pattern in the whole buffer, but only check it at the beginning.
But it must reverse direction if needed.

Ticket #4849

Backported manually by jason.ish@oisf.net.

(cherry picked from commit 464ff80c6a)
4 years ago
Philippe Antoine 8498999c6a tftp: use destate
And avoids memory leaks on it

Ticket #4848
4 years ago
Victor Julien 20b379d92a smb: fix read queue exceeded event and rules 4 years ago
Victor Julien 788d8abea3 smb: log max read/write sizes
(cherry picked from commit 90d4b8e438)
4 years ago
Victor Julien 65f24b2e84 smb2: validate negotiate read/write max sizes
Raise event if they exceed the configured limit.

(cherry picked from commit fc9b65d8d3)
4 years ago
Victor Julien 8510031e6c smb2: allow limiting in-flight data size/cnt
Allow limiting in-flight out or order data chunks per size or count.

Implemented for read and writes separately:

app-layer.protocols.smb.max-write-queue-size
app-layer.protocols.smb.max-write-queue-cnt
app-layer.protocols.smb.max-read-queue-size
app-layer.protocols.smb.max-read-queue-cnt

(cherry picked from commit 4be8334c9e)
4 years ago
Victor Julien 5b38b97181 filetracker: track total queued data (in_flight)
As well as expose number of chunks.

(cherry picked from commit 2c5ad8858e)
4 years ago
Victor Julien 502db40240 smb2: add options for max read/write size
Add options for the max read/write size accepted by the parser.

(cherry picked from commit 5bcc4162f7)
4 years ago
Victor Julien 9f969e2545 smb2: track max read/write size and enforce its values
(cherry picked from commit f28888513a)
4 years ago
Victor Julien 2ba9ad53eb smb: minor function cleanup
Remove used argument from `filetracker_newchunk()`. We're not
using fill_bytes with smb.

(cherry picked from commit 594acec5dc)
4 years ago
Victor Julien 02c3bd00fa filetracker: make FileChunk private
(cherry picked from commit c7a474c725)
4 years ago
Philippe Antoine f3a6d15034 mqtt: fix consumed bytes computation for truncated msg
Ticket: 5268
(cherry picked from commit 3b13008c1b)
4 years ago
Sascha Steinbiss 084b16a63b mqtt: raise event on parse error 4 years ago
Jason Ish 4c2d543022 mqtt: ensure we do not request extra data after buffering
This is a minimal backport of 5618273ef4
to address ticket 5018.

Uses the "complete" version of take instead of the macro which is thre
streaming variant.

Ticket #5018
4 years ago
Jason Ish e55fef32d9 smb: handle records in the wrong direction
If an SMB record is seen in the wrong direction, set an event on the PDU
frame and don't process the record in the state.

No error is returned, so the next record will be processed.

(cherry picked from commit 2341f47755)
4 years ago
Jason Ish e63795543f smb: expose smb1 request/reply flags with a method
Adds `.is_request()` and `.is_reply()` to check if a SMB record flags
say the message is a request or a reply.

(cherry picked from commit 09e2d3b216)
4 years ago
Jason Ish 12a8415326 smb: fix smb2 header flag parsing
The bits were being parsed in the order they're displayed in Wireshark,
rather than the order they were being seen on the wire, resulting in
direction and async being 0 more often than they should be.

Instead of bits, take the 4 bytes as an le_u32 and just use bit masks to
extract what we need into a struct, I think its easier to reason about
this way when comparing to the Microsoft documentation.

(cherry picked from commit 7b659489c8)
4 years ago
Victor Julien ce69f79f6a smb1: apply close to direction
Instead of closing files in both direction when receiving a close request,
close only toserver files for the request and close toclient on receiving
a response.

(cherry picked from commit b336882008)
5 years ago
Victor Julien 2075038390 nfs: clean up partial record handling
There should be no remaining data after parsing the partial
RPC record, so don't handle it but instead add a debug validation
bug on.

Successful processing for NFSv3 read/write records returns
AppLayerResult::ok() directly as all data is consumed.

(cherry picked from commit 07b1100713)
5 years ago
Victor Julien fb8f4ef849 nfs3: improve read validation; fix partial handling
(cherry picked from commit d85b77cad0)
5 years ago
Victor Julien 29468e60f5 nfs3: fix partial write record handling
Comment from Jason Ish: This was a bit more than a cherry pick as some
of the modifications weren't directly portable to the nom macros. So
instead bring in some of the nom function based parsers as they work
fine with nom 5.

(cherry picked from commit 4418fc1b02)
5 years ago
Victor Julien 8c09ba0508 nfs3: enforce more values
Enforce values of a number of u32's that are used as bools or for
really low values.

(cherry picked from commit 5baf94e40d)
5 years ago
Victor Julien 5bb752e65a rpc: enforce various field values
Minimal frag_len. Correct msgtype and others.

(cherry picked from commit 1c57e3c18d)
5 years ago
Victor Julien 98773d0985 nfs/rpc: update full record parsers to be more exact
Instead of 'take'ing all data for the RPC prog_data and then
letting the higher level parsers figure out which part to use
take the exact amount.

Comments from Shivani Bhardwaj: This is was more than a cherry pick and
some of the modifications were not directly portable to the nom macros.
So, parsers were changed to make sure the functionality remained same while
making the transition to nom5 while keeping the diff minimal.

(cherry picked from commit 64d8a1e16e)
5 years ago
Victor Julien 12beed09ae nfs: break out partial record handling
(cherry picked from commit bfb5ae867e)
5 years ago
Victor Julien 353bfd6d0a nfs/rpc: enforce length field limits
Limits based on the Linux kernel limits. Then multiplied a few times
to allow for other implementations to have higher limits.

(cherry picked from commit fe76ab1803)
5 years ago
Victor Julien 1fba08a27d nfs4: verify bool fields
(cherry picked from commit 5ecb626e50)
5 years ago
Philippe Antoine 18bf8c89d9 mqtt: parse properties with the right buffer's length
(cherry picked from commit f0e869b26b)
5 years ago
Eloy Pérez González 1556ea0ceb dcerpc: remove prev_tx_call_id and clear_bind_cache from DCERPCState
remove those fields since are not used because of the removal of
handle_bind_cache.

(cherry picked from commit 15f493f516)
5 years ago
Eloy Pérez González 0c400b2ddb dcerpc: avoid delete the rpc state interface context
The bug:
The dcerpc dce_iface keyword just match the packet following the bind. Only the
next request after the rpc is sent will match. However the expected behaviour it
that all the rpc requests/responses sent under the context of the given
interface would match.

In the Open Group c706 the following is indicated:

In 2.2.1 Binding-related Operations, indicates that one category of binding
operations are those that "operations that establish internal call routing
information for the server." (The other are to establish the protocol which is
not relevant here). And the following statement can be found:

Operations in the second category establish a set of mappings that the server
can use to route calls internally to the appropriate manager routine. This
routing is based on the interface and version, operation and any object
requested by the call.

It indicates that server routes (to call methods) are based on the operation,
interface and object.

- Operation: To indicate the method to call, and operation number is
             specified as indicated in the second step of 2.3.3.2 (Client
             Binding Steps).
- Interface: An interface is a set of remotely callable operations offered by a
             server and invokable by clients. (2.1.1.1)
- Object: Is the manager that implements the interface, as stated in section
          Interface and Manager Selection of 2.3.3.3. It is not mandatory, can
          be nil.

To call a method, a client must send a request message as defined in 2.6.4.9,
that contains these identifiers:

- opnum: The opnum field identifies the operation being invoked within the
         interface.
- p_cont_id (Context ID in Wireshark): The p_cont_id field holds a presentation
                                       context identifier that identifies the
                                       data representation and interface, as
                                       defined in 12.6.3.4 (Context Identifiers).
- object: The object field is contained if the PFC_OBJECT_UUID is set. (Could be
          interesting to create a keyword dce_object for matching this UUID)

Therefore, to get the correct method to invoke, the server must map the context
to the correct interface. This is negotiated by the bind request

Interfaces are first negotiated using the bind message (12.6.4.3), contained in
the p_context_elem array. Then they are accepted or rejected using the bind_ack
message (12.6.4.4).

Once these contexts are established, both client and server can use the context
id, which is the index of the p_context_elem array, to refer the interface they
are using.

Moreover, in the middle of the connection, the context can be changed with the
alter_context message.

This is way suricata shouldn't delete the bindack attribute, that contains
the contexts, used by match_backuuid. This is the only way to know the interface
a request message is referring to.

ticket: 4769
https://redmine.openinfosecfoundation.org/issues/4769

(cherry picked from commit 1aca2676a6)
5 years ago
Eloy Pérez González 3028bdadc5 smb/dce_iface: avoid deleting current ifaces from state
The smb dce_iface keyword must match for all those dcerpc requests
and responses sent in the context of the given interface. They are
not matching as the current bind interfaces are deleted by any
non bind message.

Ticket: 4767
(cherry picked from commit bff0774767)
5 years ago
Eloy Pérez González 9bc31affa4 smb/dce_iface: use DCERPC_TYPE_REQUEST
The smb dce_iface keyword must match for all those dcerpc requests and
responses sent in the context of the given interface. They are not
matching because in rs_smb_tx_get_dce_iface, x.req_cmd is erroneously
compared with 1. Fix this by comparing with DCERPC_TYPE_REQUEST instead.

Ticket: 4767
(cherry picked from commit 1ae22fd5de)
5 years ago
Eloy Pérez González 09c8b17bf7 smb/dce_opnum: move range if to outer context
The smb dce_opnum matches all the opnums that are higher that the
indicated opnum. This is due the range comparison if was put in the
exact comparison context, and in case the opnum doesn't match exactly,
then the range comparison is triggered (the upper limit is always true).

Move the erroneus if to the outer context, as else option of the block
checks if comparison should be exact or range.

Ticket: 4767
(cherry picked from commit 333db3b385)
5 years ago
Eloy Pérez González 97d90ea62c smb/dce_opnum: use DCERPC_TYPE_REQUEST
The smb dce_opnum keyword doesn't match the dcerpc requests/responses.
This occurs because in the rs_smb_tx_match_dce_opnum function, the
x.req_cmd is matched against the erroneous code 1. Fix this by using
DCERPC_TYPE_REQUEST for the comparison instead.

Ticket: 4767
(cherry picked from commit 8dca3d0416)
5 years ago
Jason Ish a3b803d150 dns: add dns flag to dns request logging
Ticket #4515

(cherry picked from commit 0861b66e15)
5 years ago
Odin Jenseg 4318e9726f dns: Logging of Z-bit
[Edit by Jason Ish: fix flag bit value]

Ticket #4515

(cherry picked from commit dfb6f105e8)
5 years ago
Jason Ish 6a55c14c77 dns: create transaction even if z-bit was set
It appears that DNS servers will still process a DNS request even if the
z-bit is set, our parser will fail the transaction. So create the
transaction, but still set the event.

Ticket #4924

(cherry picked from commit fcbdc30426)
5 years ago
Philippe Antoine 9d7630d142 mqtt: fix transaction completion
Ticket: 4862

A transaction to client is always considered
complete in the direction to server and vice versa.
Otherwise, transactions are never complete for
AppLayerParserTransactionsCleanup

(cherry picked from commit 1b10848d84)
5 years ago
Jason Ish 19d9a05549 dhcp: fix url in comment
rustdoc was complaining about the format of the URL in a comment
while trying to generate documentation. Convert the comment to a
non-rustdoc comment for now to satisfy rustdoc.

(cherry picked from commit eb6cc62937)
5 years ago
Philippe Antoine f5049041be ntp: fixes leak of de_state
Bug: #4752.
(cherry picked from commit 3212fa7d2b)
5 years ago
Philippe Antoine 7e8247164c snmp: fixes leak of de_state
Bug: #4752.
(cherry picked from commit 28a3181a2d)
5 years ago
Philippe Antoine 5c95c28387 smb: midstream probing checks for netbios message type
If it is available

Bug: #4620.
(cherry picked from commit f37240a3e2)
5 years ago
Philippe Antoine 8b54e8fdf0 rust: right condition for both uint to be zero
Theay can overflow leading to their addition to be zero

If a NFS read reply indicates a count of 0xFFFFFFFF

Bug: #4680.
(cherry picked from commit 8f8823b6f2)
5 years ago
Philippe Antoine f992e2adb1 style: remove latest warnings
about unused variables

(cherry picked from commit cb30772372)
5 years ago
Shivani Bhardwaj 2616afa625 ssh: fix match on ssh banner
Default detection handling of SSH should not be to pass in case the
direction was not a match but to treat it like it was meant to server.
5 years ago
Philippe Antoine e5ca0f7abb http2: better rust lifetimes
so that borrow check gets happy

(cherry picked from commit 56fae072b2)
5 years ago
Philippe Antoine 2b4be3187e http2: better rust style
(cherry picked from commit 596a4a9d6e)
5 years ago
Philippe Antoine 4f15d53f1f http2: concatenate one headers multiple values
For detection, as is done with HTTP1

(cherry picked from commit 48ed874dda)
5 years ago
Philippe Antoine ff698f522f http2: generic http2_header_blocks
so as not to forget continuation and push promise
when iterating over headers

(cherry picked from commit e3ff0e7731)
5 years ago
Philippe Antoine 9556b376f9 http2: http.header keyword now works for HTTP2
As well as http.header.raw

(cherry picked from commit 0b0649d98e)
5 years ago
Philippe Antoine 240f779b99 http2: http.header_names keyword now works for HTTP2
(cherry picked from commit 9b9f909d7d)
5 years ago
Philippe Antoine 629a8226a0 http2: http.host normalized keyword now works for HTTP2
(cherry picked from commit 547e9f4ab4)
5 years ago
Philippe Antoine 59a109c049 http2: turn Host header into authority during upgrade
HTTP1 uses Host, but HTTP2 uses rather :authority cf HPACK

(cherry picked from commit 75f75e1eb0)
5 years ago
Philippe Antoine cf04608992 dns: improve probing parser
Checks opcode is valid
Checks additional_rr do not exceed message length
Better logic for incomplete cases

(cherry picked from commit 9e7ea631b2)
5 years ago
Philippe Antoine c42b81b769 nfs: improve probing parser
Checks credentials flavor is known

(cherry picked from commit b3c1f2ab48)
5 years ago
Philippe Antoine 8704057df0 http2: better file tracking
If an HTTP2 file was within only ont DATA frame, the filetracker
would open it and close it in the same call, preventing the
firther call to incr_files_opened

Also includes rustfmt again for all HTTP2 files

(cherry picked from commit bb98a18b3d)
5 years ago
Victor Julien 12e71ed090 smb: add debug validation on file counts
(cherry picked from commit c9cee7af49)
5 years ago
Victor Julien c7da7215db smb: count files in tx
(cherry picked from commit 114d3ba730)
5 years ago
Victor Julien f8a50a66ca http2: support per-tx file accounting
(cherry picked from commit c1dfb619c4)
5 years ago