Philippe Antoine
784558df2e
mime: handles multiple sections for a parameter
...
Ticket: 4386
as per RFC2231.
For instance filename can be split between filename*0,
filename*1, etc...
4 years ago
Philippe Antoine
8feb9c35ae
mime: move FindMimeHeaderTokenRestrict to rust
...
Also fixes the case where the token name is present
in a value
4 years ago
Philippe Antoine
1b10848d84
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
4 years ago
Jason Ish
7732efbec2
app-layer: include decoder events in app-layer tx data
...
As most parsers use an events structure we can include it in the
tx_data structure to reduce some boilerplate/housekeeping code
in app-layer parsers.
4 years ago
Philippe Antoine
0caaf6bd23
range: prevents memory leak of file from HTTP2
...
Ticket: 4811
Completes commit c023116857
state.free should also close files with ranges
as state.free_tx did already
And file_range field should be reset so that there is no
use after free.
4 years ago
Jeff Lucovsky
23faeaea5c
ftp: Remove diagnostic print
...
This commit removes a diagnostic message displayed during extraction of
the EPSV port.
4 years ago
Philippe Antoine
c023116857
range: prevents memory leak of file from HTTP2
...
If a HTTP2 transaction gets freed before the end of the range
request, we need to have the files container which is in
the state, to transfer owernship of this file to the files
container.
Ticket: 4811
4 years ago
Pierre Chifflier
acb3ec6db1
rust/nfs: convert parser to nom7 functions (NFS v2 records)
4 years ago
Pierre Chifflier
ea1d03f8e3
rust/nfs: add a maximum number of operations per compound
...
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.
4 years ago
Pierre Chifflier
0ffe123330
rust/nfs: convert parser to nom7 functions (NFS v3 and v4 records)
4 years ago
Jason Ish
eb6cc62937
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.
4 years ago
Jason Ish
b57280ff48
rdp: fix transaction id
...
By our convention the transaction ID is incremented then applied
to the new transaction. And the generic transaction iterator
requires this behaviour.
4 years ago
Jason Ish
9c67c634c1
app-layer: include DetectEngineState in AppLayerTxData
...
Every transaction has an existing mandatory field, tx_data. As
DetectEngineState is also mandatory, include it in tx_data.
This allows us to remove the boilerplate every app-layer has
for managing detect engine state.
4 years ago
Jason Ish
f4b4d531b0
rdp: add tx iterator
4 years ago
Jason Ish
238ec953b7
krb5: use tx iterator
4 years ago
Jason Ish
ef0c351953
ntp: add tx iterator
4 years ago
Jason Ish
871fb035b4
sip: add tx iterator
4 years ago
Jason Ish
d6b2d7e16a
ike: add tx iterator
...
For IKE the manual iterator functions were there, but never
registered. So this commit does add a tx iterator to ike.
4 years ago
Jason Ish
3f2d2bc12b
snmp: use generic tx iterator
4 years ago
Jason Ish
ac4c5ada2f
dhcp: use generic tx iterator
4 years ago
Jason Ish
54e62ddf71
http2: use generic tx iterator
4 years ago
Jason Ish
6cffecfe3e
template: use generic tx iterator
4 years ago
Jason Ish
a936755731
nfs: use generic tx iterator
4 years ago
Jason Ish
0188a01daf
rfb: use generic tx iterator
4 years ago
Jason Ish
b335409690
mqtt: use generic tx iterator
4 years ago
Jason Ish
d71bcd82d9
modbus: use generic tx iterator
4 years ago
Jason Ish
fcfc9876ce
smb: use generic tx iterator
4 years ago
Jason Ish
049d43212e
rust/app-layer: provide generic implementation of iterator
...
Create traits for app-layer State and Transaction that allow
a generic implementation of a transaction iterator that parser
can use when the follow the common pattern for iterating
transactions.
Also convert DNS to use the generic for testing purposes.
4 years ago
Shivani Bhardwaj
26c7d3cc35
http2: remove needless borrows
4 years ago
Shivani Bhardwaj
f3a1e3b92e
core: Remove unneeded consts
4 years ago
Shivani Bhardwaj
b5a123adb1
ssh: use Direction enum
4 years ago
Shivani Bhardwaj
baf30cfc05
snmp: use Direction enum
4 years ago
Shivani Bhardwaj
89cb337930
smb: use Direction enum
4 years ago
Shivani Bhardwaj
8f9f78c2d0
sip: use Direction enum
4 years ago
Shivani Bhardwaj
11c438a07d
nfs: use Direction enum
4 years ago
Shivani Bhardwaj
a7ac79bed7
mqtt: use Direction enum
4 years ago
Shivani Bhardwaj
209e2f17fa
krb: use Direction enum
4 years ago
Shivani Bhardwaj
243960a511
ike: use Direction enum
4 years ago
Shivani Bhardwaj
ee5b300ccf
http2: use Direction enum
4 years ago
Shivani Bhardwaj
0c6e9ac931
files: use Direction enum
4 years ago
Shivani Bhardwaj
a19d2b4e1e
dns: use Direction enum
4 years ago
Shivani Bhardwaj
a866499bca
dcerpc: use Direction enum
4 years ago
Shivani Bhardwaj
9512bfd729
core: add Direction enum
...
Ticket: 3832
4 years ago
Philippe Antoine
3212fa7d2b
ntp: fixes leak of de_state
...
Bug: #4752 .
4 years ago
Philippe Antoine
28a3181a2d
snmp: fixes leak of de_state
...
Bug: #4752 .
4 years ago
Philippe Antoine
f37240a3e2
smb: midstream probing checks for netbios message type
...
If it is available
Bug: #4620 .
4 years ago
Philippe Antoine
8f8823b6f2
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 .
4 years ago
Pierre Chifflier
ce652511bd
rust/tftp: convert parser to nom7 functions
4 years ago
Pierre Chifflier
c525a1337c
rust/dns: convert parser to nom7 functions
4 years ago
Pierre Chifflier
74be8b94ec
rust/ssh: convert parser to nom7 functions
4 years ago
Pierre Chifflier
8a584c211e
rust/mqtt: convert parser to nom7 functions
4 years ago
Pierre Chifflier
d27125d77a
rust/sip: convert parser to nom7 functions
4 years ago
Pierre Chifflier
1046a7d1a3
rust/ftp: convert parser to nom7 functions
4 years ago
Pierre Chifflier
ebd5883da8
rust/dhcp: convert parser to nom7 functions
4 years ago
Pierre Chifflier
17170c41aa
rust: add nom7 dependency
4 years ago
Modupe Falodun
a87c7e5c08
rust: remove unnecessary nested match
...
Bug: #4605
4 years ago
Modupe Falodun
74c39500c3
rust: fix inherent to string
...
Bug: OISF#4618
4 years ago
Sam Muhammed
922a453da5
rust(lint): use is_null() instead of ptr::null_mut()
...
Bug: #4594
4 years ago
Sam Muhammed
23768c7181
rust(lint): use is_null() instead of ptr::null()
...
Bug: #4594
4 years ago
Sam Muhammed
da0a976e23
rust(lint): use let for binding single value
...
`match` is better used with binding to multiple variables,
for binding to a single value, `let` statement is recommended.
Bug: #4616
4 years ago
Philippe Antoine
5bd065cb3c
range: checks that end is after start for HTTP2
...
As was done only for HTTP1 in previous commit
The verification part stays separated from the parsing part,
as we want to keep on logging invalid ranges values.
4 years ago
Philippe Antoine
accdad7881
ike: do not keep server transforms in state
...
Fixes #4534
Now, only the tx with the transforms will match
with ike.chosen_sa_attribute
4 years ago
Philippe Antoine
83887510a8
modbus: tx iterator
...
When there are a lot of open transactions, as is possible with
modbus, the default tx_iterator will loop for the whole
transacations vector to find each transaction, that means
quadratic complexity.
Reusing the tx_iterator from the template, and keeping as a state
the last index where to start looking avoids this quadratic
complexity.
4 years ago
Philippe Antoine
ea4a509a54
app-layer: disable by default if not in configuration
...
DNP3, ENIP, HTTP2 and Modbus are supposed to be disabled
by default. That means the default configuration does it,
but that also means that, if they are not in suricata.yaml,
the protocol should stay disabled.
4 years ago
Philippe Antoine
8e8899c90c
http2: range: check return value when opening
...
HttpRangeContainerOpenFile can return NULL
so, http2_range_open can set file_range to NULL
And we should check this before calling http2_range_close
4 years ago
Philippe Antoine
cb30772372
style: remove latest warnings
...
about unused variables
4 years ago
Philippe Antoine
98f84d5a9b
http2: follow range requests
...
Move the content-range parsing code to rust
4 years ago
Philippe Antoine
56fae072b2
http2: better rust lifetimes
...
so that borrow check gets happy
4 years ago
Philippe Antoine
a1f9e0c97a
rust: rename to StreamingBufferConfig as in C
4 years ago
Shivani Bhardwaj
42da0fb5c5
smb: fix broken stream depth setting
...
The stream depth setting was broken since it was moved to Rust because
of a missing parser for memory values in configuration.
Use get_memval fn from conf.rs to calculate and fetch the correct
values.
4 years ago
Shivani Bhardwaj
0cfe512ef0
rust/conf: add getter for memval
...
Add a parser for memory values like 50kb, 20mb, etc on the Rust side.
4 years ago
Shivani Bhardwaj
f3fcc39738
ssh: remove futile default port setting
4 years ago
Shivani Bhardwaj
1f48714e75
smb: remove futile default port setting
4 years ago
Shivani Bhardwaj
13741540ce
rfb: remove futile default port setting
4 years ago
Shivani Bhardwaj
7c9d573800
nfs: remove futile default port setting
4 years ago
Shivani Bhardwaj
f4f6387a00
dcerpc: use null for default ports
4 years ago
Philippe Antoine
596a4a9d6e
http2: better rust style
4 years ago
Philippe Antoine
48ed874dda
http2: concatenate one headers multiple values
...
For detection, as is done with HTTP1
4 years ago
Philippe Antoine
e3ff0e7731
http2: generic http2_header_blocks
...
so as not to forget continuation and push promise
when iterating over headers
4 years ago
Philippe Antoine
0b0649d98e
http2: http.header keyword now works for HTTP2
...
As well as http.header.raw
4 years ago
Philippe Antoine
9b9f909d7d
http2: http.header_names keyword now works for HTTP2
4 years ago
Philippe Antoine
547e9f4ab4
http2: http.host normalized keyword now works for HTTP2
4 years ago
Philippe Antoine
75f75e1eb0
http2: turn Host header into authority during upgrade
...
HTTP1 uses Host, but HTTP2 uses rather :authority cf HPACK
4 years ago
Philippe Antoine
bb98a18b3d
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
4 years ago
Philippe Antoine
1378b2f451
http2: support deflate decompression
...
cf #4556
4 years ago
Victor Julien
c9cee7af49
smb: add debug validation on file counts
4 years ago
Victor Julien
114d3ba730
smb: count files in tx
4 years ago
Victor Julien
c1dfb619c4
http2: support per-tx file accounting
4 years ago
Victor Julien
1b3c3225cd
nfs: add debug validation on file counts
4 years ago
Victor Julien
1d48601c25
nfs: support per-tx file accounting
4 years ago
Victor Julien
67759795c6
nfs: don't reuse file transactions
...
After a file has been closed (CLOSE, COMMIT command or EOF/SYNC part of
READ/WRITE data block) mark it as such so that new file commands on that
file do not reuse the transaction.
When a file transfer is completed it will be flagged as such and not be
found anymore by the NFSState::get_file_tx_by_handle() method. This forces
a new transaction to be created.
4 years ago
Victor Julien
56d3e28a3a
filestore: track files getting stored per tx
...
Avoid evicting a tx before the filedata logger has decided it is
done.
4 years ago
Victor Julien
c78f5ac316
app-layer/transactions: track files opens and logs
...
To make sure a transaction is not evicted before all file logging is complete.
4 years ago
Philippe Antoine
9b8be5a650
smb: get file name in case of chained commands
4 years ago
Philippe Antoine
3e5f59e2cb
smb: fix parsing of file deletion over SMB1
4 years ago
Philippe Antoine
fde753d9d2
smb: recognizes file deletion over SMB2
...
using set_info_level == SMB2_FILE_DISPOSITION_INFO
4 years ago
Jason Ish
71679c6ad0
ike: use derive macro from app-layer events
4 years ago
Jason Ish
eb55297876
modbus: use derive macro from app-layer events
4 years ago
Jason Ish
d3bd008e33
app-layer template: use derived app-layer event
4 years ago
Jason Ish
cef2832dcf
http2: use derived app-layer event
4 years ago