]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
17 months agodetect/http: report error on alloc failure 10347/head
Victor Julien [Fri, 9 Feb 2024 07:09:38 +0000 (08:09 +0100)] 
detect/http: report error on alloc failure

17 months agodetect/http_header: fix leak on realloc failure
Philippe Antoine [Thu, 8 Feb 2024 19:23:59 +0000 (20:23 +0100)] 
detect/http_header: fix leak on realloc failure

17 months agodetect-http: add superfluous alloc check for cocci
Jason Ish [Thu, 8 Feb 2024 19:21:11 +0000 (13:21 -0600)] 
detect-http: add superfluous alloc check for cocci

Add not-needed SCCalloc return check to satisfy our Cocci malloc
checks as it can't see that the caller immediately checks the return
value of this simple wrapper around SCCalloc.

17 months agorust: fix clippy ptr_arg warnings
Philippe Antoine [Thu, 8 Feb 2024 14:47:23 +0000 (15:47 +0100)] 
rust: fix clippy ptr_arg warnings

error: writing `&Vec` instead of `&[_]` involves a new object where a slice will do
   --> src/dns/log.rs:371:29
    |
371 | pub fn dns_print_addr(addr: &Vec<u8>) -> std::string::String {
    |                             ^^^^^^^^ help: change this to: `&[u8]`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg

17 months agoci: authors check using OISF repo
Philippe Antoine [Wed, 7 Feb 2024 20:54:28 +0000 (21:54 +0100)] 
ci: authors check using OISF repo

As flagged critical by codescan

17 months agohttp2: limit number of concurrent transactions
Philippe Antoine [Thu, 9 Nov 2023 15:15:36 +0000 (16:15 +0100)] 
http2: limit number of concurrent transactions

Ticket: 6481

Instead of just setting the old transactions to a drop state so
that they get later cleaned up by Suricata, fail creating new ones.

This is because one call to app-layer parsing can create many
transactions, and quadratic complexity could happen in one
single app-layer parsing because of find_or_create_tx

17 months agopgsql: parse only PDU when type is unknown
Philippe Antoine [Tue, 17 Oct 2023 20:04:57 +0000 (22:04 +0200)] 
pgsql: parse only PDU when type is unknown

A next PDU may already be in the slice to parse.
Do not skip its parsing, ie do not use rest, but take just
the length of the pdu

17 months agopgsql: parse auth message within its bound
Philippe Antoine [Tue, 17 Oct 2023 20:01:27 +0000 (22:01 +0200)] 
pgsql: parse auth message within its bound

If the next PDU is already in the slice next, do not use it and
restrict ourselves to the length of this PDU.
Avoids overconsumption of memory by quadratic complexity, when
having many small PDUS in one big chunk being parsed

Ticket: #6411

17 months agodetect: fixes use-after-free with http.request_header
Philippe Antoine [Tue, 7 Nov 2023 09:33:21 +0000 (10:33 +0100)] 
detect: fixes use-after-free with http.request_header

Ticket: #6441

This keyword and the response one use a multiple inspection buffer.
But the different instances point to the same memory address
that comes from HttpHeaderGetBufferSpace and is not owned
by the transaction, and is rebuilt, which is a functional
bug in itself.

As it gets crafted, it can get reallocated if one header
is over 1024 bytes, while the previous freed pointer will still get
used for the previous headers.

17 months agosmtp: avoid creating empty transaction
Philippe Antoine [Tue, 14 Nov 2023 20:51:37 +0000 (21:51 +0100)] 
smtp: avoid creating empty transaction

Ticket: 6477

So as to avoid ending up with too many empty transactions.

This happens when Suricata sees a DATA command in the current
transaction but did not have a confirmation response for it.
Then, if Suricata receives another DATA command, it will
create another new transaction, even if the previous one
is empty. And so, a malicious client can create many empty
transactions by just sending a repeated amount of DATA commands
without having a confirmation code for them.

Suricata cannot use state->current_command == SMTP_COMMAND_DATA
to prevent this attack and needs to resort to a new boolean
is_data because the malicious client may send another dummy command
after each DATA command.

This patch leaves only one call to SMTPTransactionCreate

17 months agosmtp: config limit maximum number of live transactions
Philippe Antoine [Thu, 9 Nov 2023 11:27:59 +0000 (12:27 +0100)] 
smtp: config limit maximum number of live transactions

Ticket: #6477

17 months agohttp1: configurable max number of live tx per flow
Philippe Antoine [Tue, 17 Oct 2023 13:28:53 +0000 (15:28 +0200)] 
http1: configurable max number of live tx per flow

Ticket: #5921

Co-authored-by: Jason Ish <jason.ish@oisf.net>
17 months agohttp1: remove transactions from their list
Philippe Antoine [Fri, 7 Apr 2023 14:02:41 +0000 (16:02 +0200)] 
http1: remove transactions from their list

instead of keeping a NULL pointer in an array

Ticket: #5921

17 months agohttp2: handle reassembly for continuation frames
Philippe Antoine [Thu, 25 Jan 2024 15:01:14 +0000 (16:01 +0100)] 
http2: handle reassembly for continuation frames

Ticket: 5926

HTTP2 continuation frames are defined in RFC 9113.
They allow header blocks to be split over multiple HTTP2 frames.
For Suricata to process correctly these header blocks, it
must do the reassembly of the payload of these HTTP2 frames.
Otherwise, we get incomplete decoding for headers names and/or
values while decoding a single frame.

Design is to add a field to the HTTP2 state, as the RFC states that
these continuation frames form a discrete unit :
> Field blocks MUST be transmitted as a contiguous sequence of frames,
> with no interleaved frames of any other type or from any other stream.
So, we do not have to duplicate this reassembly field per stream id.

Another design choice is to wait for the reassembly to be complete
before doing any decoding, to avoid quadratic complexity on partially
decoding of the data.

17 months agodetect: errors on 65k filestore signatures 10321/head
Philippe Antoine [Mon, 9 Oct 2023 12:49:54 +0000 (14:49 +0200)] 
detect: errors on 65k filestore signatures

Errors when a detection engine gets 65k filestore signatures to
avoid the hard limit to have 65k filestore per signature group
head

Ticket: #6393

17 months agodetect: remove unneeded max_idx
Shivani Bhardwaj [Thu, 1 Feb 2024 11:28:48 +0000 (16:58 +0530)] 
detect: remove unneeded max_idx

17 months agodetect/engine: set max sig ID per SGH
Shivani Bhardwaj [Thu, 1 Feb 2024 11:14:33 +0000 (16:44 +0530)] 
detect/engine: set max sig ID per SGH

Present scenario
----------------
Currently, as a part of setting signature count per SGH, a max_idx is
passed which could be as high as the highest signature number (internal
ID).

Issue
-----
Not every SGH needs to evaluate all the signatures while setting
the signature count or while creating the match_array.
In a nonideal scenario, when say, there are 2 SGHs and one SGH has 2
signatures and the other one has 60k, given the current scheme of
evaluating max_idx, the max_idx will be set to 60k, and this shall
later be passed on to SigGroupHeadSetSigCnt or
SigGroupHeadBuildMatchArra which shall traverse over all the 60k sigs
for either SGHs.

Other info
----------
This is a very fast operation as the internal arithmetic is done
bitwise.

Patch
-----
The functions SigGroupHeadSetSigCnt and SigGroupHeadBuildMatchArray can
be optimized by storing the max signature id (internal) per SGH (which
also seemed to be the initial intention as per fn comments).
As a result of this, the sig_array is only walked up until the max sig
id of that respective SGH.

17 months agodetect: remove unused port in SigGroupHeadInitData
Shivani Bhardwaj [Thu, 1 Feb 2024 09:50:15 +0000 (15:20 +0530)] 
detect: remove unused port in SigGroupHeadInitData

port is not used and logically makes sense to not be in this struct as
this struct is already referenced by DetectPort itself as a part of
SigGroupHead.

17 months agoci: update scorecard analysis workflow
Philippe Antoine [Tue, 30 Jan 2024 19:42:16 +0000 (20:42 +0100)] 
ci: update scorecard analysis workflow

17 months agodetect: dns.opcode as first-class integer
Philippe Antoine [Thu, 30 Nov 2023 13:32:08 +0000 (14:32 +0100)] 
detect: dns.opcode as first-class integer

Ticket: 5446

That means it can accept ranges

17 months agoutil/streaming-buffer: remove unneeded fn param
Shivani Bhardwaj [Mon, 15 Jan 2024 07:09:34 +0000 (12:39 +0530)] 
util/streaming-buffer: remove unneeded fn param

StreamingBuffer is not required to find the intersecting regions, so,
don't pass it as a param to the fn.

18 months agouserguide: fix explanation about bsize ranges 10277/head
Juliana Fajardini [Wed, 24 Jan 2024 15:00:41 +0000 (12:00 -0300)] 
userguide: fix explanation about bsize ranges

Our code handles Uint ranges as exclusive, but for bsize, our
documentation stated that they're inclusive.

Cf. from uint.rs:

    DetectUintMode::DetectUintModeRange => {
        if val > x.arg1 && val < x.arg2 {
            return true;
        }
    }

Task #6708

18 months agodoc: integer keywords
Philippe Antoine [Thu, 4 Jan 2024 10:00:51 +0000 (11:00 +0100)] 
doc: integer keywords

Ticket: 6628

Document the generic detection capabilities for integer keywords.
and make every integer keyword pointing to this section.

18 months agodetect: integer keywords now accept bitmasks
Philippe Antoine [Sat, 30 Dec 2023 20:46:54 +0000 (21:46 +0100)] 
detect: integer keywords now accept bitmasks

Ticket: 6648

Like &0x40=0x40 to test for a specific bit set

18 months agodetect/integer: rust derive for enumerations
Philippe Antoine [Fri, 22 Dec 2023 10:59:35 +0000 (11:59 +0100)] 
detect/integer: rust derive for enumerations

Ticket: 6647

Allows keywords using integers to use strings in signature
parsing based on a rust enumeration with a derive.

18 months agodetect: integer keywords now accept negated ranges
Philippe Antoine [Thu, 30 Nov 2023 14:18:20 +0000 (15:18 +0100)] 
detect: integer keywords now accept negated ranges

Ticket: 6646

18 months agodetect: integer keywords now support hexadecimal
Philippe Antoine [Fri, 1 Dec 2023 09:51:39 +0000 (10:51 +0100)] 
detect: integer keywords now support hexadecimal

So that we can write enip.revision: 0x203

Ticket: 6645

18 months agoci: run clippy without all features
Philippe Antoine [Tue, 16 Jan 2024 10:50:10 +0000 (11:50 +0100)] 
ci: run clippy without all features

18 months agorust: make cargo clippy clean
Philippe Antoine [Tue, 16 Jan 2024 10:47:30 +0000 (11:47 +0100)] 
rust: make cargo clippy clean

Fixing single_match and manual_find intertwined with SCLogDebug

18 months agomqtt: fix logic when setting event
Philippe Antoine [Tue, 17 Oct 2023 08:26:57 +0000 (10:26 +0200)] 
mqtt: fix logic when setting event

Especially sets transactions to complete when we get a response
without having seen the request, so that the transactions
end up getting cleaned (instead of living/leaking in the state).

Also try to set the event on the relevant transaction, instead
of creating a new transaction just for the purpose of having
the event.

Ticket: #6299

18 months agodetect: do not store state without flags
Philippe Antoine [Mon, 18 Sep 2023 11:29:08 +0000 (13:29 +0200)] 
detect: do not store state without flags

If flags are zero, there is nothing to store and remember.

Stored signatures will be reused on a later packet, and
qsorted (which may be expensive), with newer matches candidates.

Avoiding to store, leads to avoid the call to qsort.

18 months agodetect: merge sorted lists instead of qsort
Philippe Antoine [Mon, 18 Sep 2023 11:27:47 +0000 (13:27 +0200)] 
detect: merge sorted lists instead of qsort

Ticket: #6299

Simply because it is faster (just linear).

This is for merging match_array into tx_candidates

18 months agodetect: avoids case of useless detection on txs
Philippe Antoine [Thu, 7 Sep 2023 12:33:04 +0000 (14:33 +0200)] 
detect: avoids case of useless detection on txs

When a TCP flow packet has not led to app-layer updates,
it is useless to run DetectRunTx, as there cannot be new
matches.

This happens for instance, when one side sends in a row multiple
packets which are not acked (and thus not parsed in IDS mode).

Doing so requires to move up the call to
AppLayerParserSetTransactionInspectId
so that it is run the same times DetectRunTx is run, and not in the
case where the transaction was not updated.

Ticket: 6299

18 months agorequirements: use libhtp 0.5.x 10244/head
Jason Ish [Wed, 24 Jan 2024 20:41:47 +0000 (14:41 -0600)] 
requirements: use libhtp 0.5.x

Move to libhtp to the 0.5.x branch instead of 0.5.45.

18 months agodoc: note what version "requires" was added in 10237/head 10240/head
Jason Ish [Wed, 24 Jan 2024 15:55:37 +0000 (09:55 -0600)] 
doc: note what version "requires" was added in

18 months agodetect/requires: reset sigerror flags for each rule
Jason Ish [Wed, 24 Jan 2024 15:02:19 +0000 (09:02 -0600)] 
detect/requires: reset sigerror flags for each rule

"sigerror_ok" and "sigerror_requires" were not being reset after each
rule which could lead to a rule load error being incorrectly tracked
as skipped rather than failed.

Also initialize "skippedsigs" to 0 along with "goodsigs" and
"badsigs", while not directly related to this issue, could also throw
off some stats.

Ticket: #6710

18 months agodetect: update smb.version keyword 10204/head
jason taylor [Wed, 30 Aug 2023 18:50:19 +0000 (18:50 +0000)] 
detect: update smb.version keyword

Signed-off-by: jason taylor <jtfas90@gmail.com>
18 months agorust: fix rustfmt warnings for smb detect
jason taylor [Wed, 30 Aug 2023 18:44:07 +0000 (18:44 +0000)] 
rust: fix rustfmt warnings for smb detect

Signed-off-by: jason taylor <jtfas90@gmail.com>
18 months agosmb: add smb.keyword documentation
Eloy Pérez González [Thu, 28 Apr 2022 10:59:03 +0000 (12:59 +0200)] 
smb: add smb.keyword documentation

18 months agosmb: add smb.version keyword
Eloy Pérez González [Thu, 28 Apr 2022 10:57:51 +0000 (12:57 +0200)] 
smb: add smb.version keyword

Ticket: #5075

Signed-off-by: jason taylor <jtfas90@gmail.com>
18 months agouserguide: clarify midstream exception policy
Juliana Fajardini [Thu, 18 Jan 2024 20:24:33 +0000 (17:24 -0300)] 
userguide: clarify midstream exception policy

The description of behavior when midstream is enabled and exception
policy is set to ignore wasn't descriptive enough.

Fix typos.

18 months agodoc: remove references to prehistoric versions
Lukas Sismis [Mon, 11 Dec 2023 00:47:55 +0000 (01:47 +0100)] 
doc: remove references to prehistoric versions

Remove references that are mentioning Suricata 3 or less
As a note - only one Suricata 4 reference found:
(suricata-yaml.rst:"In 4.1.x")
Fast pattern selection criteria can be internally found by inspecting
SupportFastPatternForSigMatchList and SigTableSetup functions.

Ticket: #6570

18 months agodpdk: add interrupt (power-saving) mode
Lukas Sismis [Wed, 27 Sep 2023 12:38:36 +0000 (14:38 +0200)] 
dpdk: add interrupt (power-saving) mode

When the packet load is low, Suricata can run in interrupt
mode. This more resembles the classic approach of processing
packets - CPU cores run low and only fetch packets
on interrupt.

Ticket: #5839

18 months agodpdk: rework hugepage hints to use per-numa information
Lukas Sismis [Mon, 30 Oct 2023 11:33:57 +0000 (12:33 +0100)] 
dpdk: rework hugepage hints to use per-numa information

Previous integration of hugepage analysis only fetched data
from /proc/meminfo. However this proved to be often
deceiving mainly for providing only global information and
not taking into account different hugepage sizes (e.g. 1GB
hugepages) and different NUMA nodes.

Ticket: #6419

18 months agosource/erf-dag: compiler warnings
Stephen Donnelly [Wed, 10 Jan 2024 03:39:34 +0000 (16:39 +1300)] 
source/erf-dag: compiler warnings

Bug: #6667.

Fix compiler warnings for function pointer parameters missing const with --enable-dag

18 months agodetect: make SigMatch.is_last bool 10187/head
Shivani Bhardwaj [Tue, 16 Jan 2024 08:41:34 +0000 (14:11 +0530)] 
detect: make SigMatch.is_last bool

It is used like bool so much so that nothing needs to be changed even
after changing its type.

18 months agodetect: remove unneeded size in DetectEngineCtx
Shivani Bhardwaj [Tue, 16 Jan 2024 08:40:59 +0000 (14:10 +0530)] 
detect: remove unneeded size in DetectEngineCtx

sig_array_size can easily be calculated with length and is only used at
one place for debugging purposes. Remove it from the DetectEngineCtx
struct to avoid making it unnecessarily heavy.

18 months agodetect/alert: remove unnecessary else
Shivani Bhardwaj [Tue, 16 Jan 2024 08:39:57 +0000 (14:09 +0530)] 
detect/alert: remove unnecessary else

18 months agohtp/swf: Remove flash deprecation notice
Jeff Lucovsky [Tue, 16 Jan 2024 15:36:07 +0000 (10:36 -0500)] 
htp/swf: Remove flash deprecation notice

Issue: 6605

Flash decompression will remain so the deprecation notice is not needed.

18 months agodoc/pcap-log: Remove squil documentation
Jeff Lucovsky [Tue, 16 Jan 2024 14:11:36 +0000 (09:11 -0500)] 
doc/pcap-log: Remove squil documentation

Issue: 6347

18 months agolog/pcap: Remove sguil mode
Jeff Lucovsky [Tue, 16 Jan 2024 14:08:44 +0000 (09:08 -0500)] 
log/pcap: Remove sguil mode

Issue: 6347

Remove sguil-mode pcap logging capability.

18 months agoconf/log: Remove sguil mode
Jeff Lucovsky [Tue, 16 Jan 2024 13:30:25 +0000 (08:30 -0500)] 
conf/log: Remove sguil mode

Issue: 6347

18 months agoeve/schema: allow authorities in dns.answers in alert
Jason Ish [Tue, 9 Jan 2024 17:40:48 +0000 (11:40 -0600)] 
eve/schema: allow authorities in dns.answers in alert

Factor out dns.authorities to a definition.

18 months agoflow-bypass: Set bypass thread to running state
Vincent Li [Fri, 4 Aug 2023 17:49:35 +0000 (17:49 +0000)] 
flow-bypass: Set bypass thread to running state

When running Suricata in XDP bypass mode (bypass: yes),

Suricata started up with error:
Error: threads: thread "FB" failed to start in time: flags 0003

"FB" thread does not transition from THV_INIT_DONE to THV_RUNNING.

Set "FB" thread THV_RUNNING state in BypassedFlowManager().

Bug: #6254

Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
18 months agorust: update test_case crate 10167/head
Philippe Antoine [Fri, 5 Jan 2024 09:18:46 +0000 (10:18 +0100)] 
rust: update test_case crate

fixes unused_unit

warning: unneeded unit expression
   --> src/bittorrent_dht/parser.rs:590:5
    |
590 | /     #[test_case(
591 | |         b"",
592 | |         "Error: discovered Dict but expected EOF" ;
593 | |         "test parse bittorrent dht packet err 1"
594 | |     )]
    | |______^

18 months agoci: run clippy on test code as well
Philippe Antoine [Sat, 6 Jan 2024 21:16:24 +0000 (22:16 +0100)] 
ci: run clippy on test code as well

18 months agorust: fix single_binding
Philippe Antoine [Sat, 6 Jan 2024 21:15:11 +0000 (22:15 +0100)] 
rust: fix single_binding

error: this match could be written as a `let` statement
   --> src/nfs/nfs3_records.rs:747:9
    |
747 | /         match result {
748 | |             (r, request) => {
749 | |                 assert_eq!(r.len(), 0);
750 | |                 assert_eq!(request.handle, expected_handle);
751 | |                 assert_eq!(request.name_vec, br#"bln"#);
752 | |             }
753 | |         }
    | |_________^

18 months agorust: fix single_match
Philippe Antoine [Fri, 5 Jan 2024 09:30:33 +0000 (10:30 +0100)] 
rust: fix single_match

warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
   --> src/http2/parser.rs:882:17
    |
882 | /                 match ctx.value {
883 | |                     Some(_) => {
884 | |                         panic!("Unexpected value");
885 | |                     }
886 | |                     None => {}
887 | |                 }
    | |_________________^

18 months agorust: fix vec_init_then_push
Philippe Antoine [Fri, 5 Jan 2024 09:27:34 +0000 (10:27 +0100)] 
rust: fix vec_init_then_push

warning: calls to `push` immediately after creation
    --> src/pgsql/parser.rs:1179:9
     |
1179 | /         let mut database_param: Vec<PgsqlParameter> = Vec::new();
1180 | |         database_param.push(database);
     | |______________________________________^
help: consider using the `vec![]` macro: `let database_param: Vec<PgsqlParameter> = vec![..];`

18 months agorust: fix zero_prefixed_literal
Philippe Antoine [Fri, 5 Jan 2024 09:22:39 +0000 (10:22 +0100)] 
rust: fix zero_prefixed_literal

warning: this is a decimal constant
   --> src/mqtt/parser.rs:888:19
    |
888 |             0x00, 06, /* Topic Length: 6 */
    |                   ^^
    |

18 months agorust: fix assertions_on_constants for assert!(false)
Philippe Antoine [Thu, 4 Jan 2024 11:48:12 +0000 (12:48 +0100)] 
rust: fix assertions_on_constants for assert!(false)

using panic! instead with a string message

18 months agorust: fix assertions_on_constants for assert!(true)
Philippe Antoine [Thu, 4 Jan 2024 10:48:32 +0000 (11:48 +0100)] 
rust: fix assertions_on_constants for assert!(true)

Which will be optimized away by the compiler

18 months agoipfw: close(2) instead shutdown(2) of the divert(4) socket
Gleb Smirnoff [Thu, 11 Jan 2024 21:35:21 +0000 (13:35 -0800)] 
ipfw: close(2) instead shutdown(2) of the divert(4) socket

The shutdown(2) syscall would always return ENOTCONN for FreeBSD 11,
FreeBSD 12, FreeBSD 13 and FreeBSD 14.  It could do some action on the
socket in the kernel in FreeBSD 10 and before, did not test.

18 months agodetect: strip_pseudo_headers transform
Philippe Antoine [Tue, 12 Dec 2023 08:34:04 +0000 (09:34 +0100)] 
detect: strip_pseudo_headers transform

Ticket: 6546

18 months agoeve/http: add location header independent of status availability 10134/head
Victor Julien [Mon, 8 Jan 2024 08:02:46 +0000 (09:02 +0100)] 
eve/http: add location header independent of status availability

18 months agoeve/http: use numeric status code by default
Victor Julien [Mon, 8 Jan 2024 08:02:15 +0000 (09:02 +0100)] 
eve/http: use numeric status code by default

To avoid costly string operations.

18 months agoeve/email: improve logging binary data
Victor Julien [Mon, 8 Jan 2024 06:43:04 +0000 (07:43 +0100)] 
eve/email: improve logging binary data

Use jb_append_string_from_bytes() as it works better than
BytesToString+jb_append_string when logging binary data.

Bug: #6664.

18 months agoflow: minor optimization
Victor Julien [Wed, 3 Jan 2024 11:16:25 +0000 (12:16 +0100)] 
flow: minor optimization

Most of the time FlowGetFlowFromHash will succeed.

18 months agodetect: consolidate per rule group file loops
Victor Julien [Wed, 3 Jan 2024 11:09:59 +0000 (12:09 +0100)] 
detect: consolidate per rule group file loops

Don't loop multiple times over the per group sig array.

18 months agodetect: remove DCERPC mask logic
Victor Julien [Sun, 31 Dec 2023 07:17:24 +0000 (08:17 +0100)] 
detect: remove DCERPC mask logic

Added nothing over alproto check already in place.

18 months agodetect/rule-header: use bool type
Victor Julien [Wed, 3 Jan 2024 09:50:04 +0000 (10:50 +0100)] 
detect/rule-header: use bool type

Update frame prototype as well, to match already returned true/false values.

18 months agodetect/rule-header: minor code cleanups
Victor Julien [Wed, 3 Jan 2024 09:44:09 +0000 (10:44 +0100)] 
detect/rule-header: minor code cleanups

18 months agodetect/address: refactor match array building
Victor Julien [Sun, 31 Dec 2023 09:22:13 +0000 (10:22 +0100)] 
detect/address: refactor match array building

18 months agodetect/address: minor cleanup
Victor Julien [Sun, 31 Dec 2023 09:17:38 +0000 (10:17 +0100)] 
detect/address: minor cleanup

18 months agompm/ac: pointer hygene
Victor Julien [Fri, 29 Dec 2023 17:27:17 +0000 (18:27 +0100)] 
mpm/ac: pointer hygene

18 months agompm/hs: improve pointer hygene
Victor Julien [Fri, 29 Dec 2023 09:59:43 +0000 (10:59 +0100)] 
mpm/hs: improve pointer hygene

18 months agodetect/mpm: minor cleanup
Victor Julien [Fri, 29 Dec 2023 08:22:14 +0000 (09:22 +0100)] 
detect/mpm: minor cleanup

18 months agodetect: shrink sgh to have all runtime members on one cache line
Victor Julien [Wed, 27 Dec 2023 18:08:29 +0000 (19:08 +0100)] 
detect: shrink sgh to have all runtime members on one cache line

18 months agodetect: constify flow flags in tx rule inspect
Victor Julien [Wed, 27 Dec 2023 16:12:33 +0000 (17:12 +0100)] 
detect: constify flow flags in tx rule inspect

18 months agodetect: minor cleanup for rule group get function
Victor Julien [Wed, 27 Dec 2023 16:01:42 +0000 (17:01 +0100)] 
detect: minor cleanup for rule group get function

18 months agoapp-layer: micro optimization for AppProtoEquals
Victor Julien [Wed, 27 Dec 2023 16:01:18 +0000 (17:01 +0100)] 
app-layer: micro optimization for AppProtoEquals

Add most common condition first.

18 months agodetect/bsize: constify keyword args during size check
Victor Julien [Fri, 22 Dec 2023 09:51:24 +0000 (10:51 +0100)] 
detect/bsize: constify keyword args during size check

18 months agodetect/content: limits prop comment cleanup
Victor Julien [Fri, 22 Dec 2023 07:43:46 +0000 (08:43 +0100)] 
detect/content: limits prop comment cleanup

18 months agodetect/dsize: minor code cleanup
Victor Julien [Fri, 22 Dec 2023 07:31:22 +0000 (08:31 +0100)] 
detect/dsize: minor code cleanup

18 months agodetect: use do { } while loop for app engine loop
Victor Julien [Thu, 21 Dec 2023 10:35:22 +0000 (11:35 +0100)] 
detect: use do { } while loop for app engine loop

18 months agodetect/content: fix offset for negative distance
Victor Julien [Wed, 20 Dec 2023 20:40:47 +0000 (21:40 +0100)] 
detect/content: fix offset for negative distance

Fix offset calculation on sigs with negative distance. Can lead to FN
in certain cases.

Bug: #6661.

18 months agodetect/content-inspect: add more tests
Victor Julien [Fri, 6 Oct 2023 10:52:54 +0000 (12:52 +0200)] 
detect/content-inspect: add more tests

18 months agospm/bm: minor code cleanups; constification
Victor Julien [Wed, 20 Dec 2023 13:38:01 +0000 (14:38 +0100)] 
spm/bm: minor code cleanups; constification

18 months agompm: UNITTESTS guard for RegisterUnittests func
Victor Julien [Tue, 19 Dec 2023 10:31:48 +0000 (11:31 +0100)] 
mpm: UNITTESTS guard for RegisterUnittests func

18 months agompm: remove unused flags field
Victor Julien [Tue, 19 Dec 2023 10:11:10 +0000 (11:11 +0100)] 
mpm: remove unused flags field

18 months agodetect/http_server_body: modernize test
Victor Julien [Tue, 19 Dec 2023 13:41:21 +0000 (14:41 +0100)] 
detect/http_server_body: modernize test

18 months agodetect: implement --qa-skip-prefilter
Victor Julien [Sun, 17 Dec 2023 09:24:56 +0000 (10:24 +0100)] 
detect: implement --qa-skip-prefilter

Option meant for testing performance of rule engine w/o prefilter
optimizations.

18 months agodetect/content-inspect: add negation tests
Victor Julien [Tue, 19 Dec 2023 06:52:45 +0000 (07:52 +0100)] 
detect/content-inspect: add negation tests

Test mixing of negation, endswith and depth.

18 months agodetect/bytetest: remove unused Match function
Victor Julien [Sun, 17 Dec 2023 18:54:43 +0000 (19:54 +0100)] 
detect/bytetest: remove unused Match function

All matching is done as part of content inspection.

18 months agodetect/pcre: remove unused match member
Victor Julien [Mon, 18 Dec 2023 10:29:01 +0000 (11:29 +0100)] 
detect/pcre: remove unused match member

pcre2_match_data is created per thread when needed.

18 months agodetect/bytemath: fix u32 buffer size logic
Victor Julien [Mon, 18 Dec 2023 07:04:52 +0000 (08:04 +0100)] 
detect/bytemath: fix u32 buffer size logic

Remove u16 cast. Remove debug assert for u16 size.

In 83ed2c3b97925d390c2a57fdc8eea52f7d3d2e4c the input was changed to
u32

18 months agodetect/pcre: localize match limit option parsing
Victor Julien [Wed, 20 Dec 2023 08:42:53 +0000 (09:42 +0100)] 
detect/pcre: localize match limit option parsing

No need to put it into a per ctx flag.

18 months agodetect/pcre: remove unused opts field
Victor Julien [Wed, 20 Dec 2023 08:33:20 +0000 (09:33 +0100)] 
detect/pcre: remove unused opts field

18 months agodetect/pcre: put commonly used members on first cache line
Victor Julien [Sun, 17 Dec 2023 20:55:42 +0000 (21:55 +0100)] 
detect/pcre: put commonly used members on first cache line

18 months agodetect/content-inspect: use of replace keyword is rare
Victor Julien [Sun, 17 Dec 2023 17:02:35 +0000 (18:02 +0100)] 
detect/content-inspect: use of replace keyword is rare

Hint compiler about this.