Commit Graph

7359 Commits (a4450b768eeb56eb095805c62cc793173ec129b1)
 

Author SHA1 Message Date
Victor Julien 77358a4113 file: optionally use detect tracking in pruning
When the file API is used to do content inspection (currently only
smtp does this), the detection should be considered while pruning
the file chunks.

This patch introduces a new flag for the file API: FILE_USE_DETECT

When it is used, 'FilePrune' will not remove chunks that are (partly)
beyond the File::content_inspected tracker.

When using this flag, it's important to realize that when the detect
engine is disabled or rules are not matching, content_inspected
might not get updated.
9 years ago
Victor Julien 5aee386fa9 smtp: add file_data debug code 9 years ago
Victor Julien c19412243a file logging: fix bad end of file check
File storage could end file storing when the logger was invoked
while no new data chunks were available.
9 years ago
Victor Julien 4526aed2b1 smtp: fix config parsing and config defaults 9 years ago
Victor Julien 32bf68aef8 smtp: consider file state in file_data inspection limits 9 years ago
Victor Julien 4783d5107f pfring: strip prio from vlan id 9 years ago
Victor Julien 01a8cc4ec9 afpacket: strip prio from vlan id 9 years ago
Victor Julien 8394b38941 cppcheck: work around snprintf warning
Cppcheck 1.72 gives a warning on the following code pattern:

    char blah[32] = "";
    snprintf(blah, sizeof(blah), "something");

The warning is:

    (error) Buffer is accessed out of bounds.

While this appears to be a FP, in most cases the initialization to ""
was unnecessary as the snprintf statement immediately follows the
variable declaration.
9 years ago
Mats Klepsland 33fd710367 rules: add rules for TLS SNI app layer events 9 years ago
Mats Klepsland 7602f650b1 app-layer-ssl: fix memleak
Avoid that the SNI extension code is executed twice sometimes, causing
memory leaks.
9 years ago
Victor Julien f17ef5e46b daemon: suppress coverity resource leak warning (CID 400725) 9 years ago
Victor Julien ed93e9394d coverity: suppress CID 1038112 9 years ago
Victor Julien 444c4b546e htp: optimize multipart parsing
Store boundary in a single stack buffer instead of 2 heap allocated
buffers.
9 years ago
Victor Julien 665cafbe3b htp: fix boundry error handling (CID 1153934) 9 years ago
Victor Julien bfc4be230c htp: fix dead code warning (CID 1153933) 9 years ago
Victor Julien b4912f3bf9 unified2: fix unused value warning (CID 1247404) 9 years ago
Victor Julien a46c4da338 lua: fix unlikely null-deref during setup (CID 1351209) 9 years ago
Victor Julien c858bfea4a base64_decode: fix potential keyword parsing issue (CID 1340064) 9 years ago
Victor Julien 2a7f068438 ioctl: fix NULL check after dereference (CID 1204326) 9 years ago
Victor Julien dff9f65ce7 lua: fix minor coverity issues
Remove checks that can never be false. CID 1232076, 1312012
9 years ago
Victor Julien 339f066533 afpacket: suppress harmless Coverity warning (1192960) 9 years ago
Victor Julien e91b9bf22b Fix compilation on systems with Musl 9 years ago
Victor Julien c91546022d smtp: clean up thread local memory 9 years ago
Victor Julien 12d7c86efc stream-tcp: improve function doc 9 years ago
Victor Julien 81878c1998 Add global MAX macro. 9 years ago
Maurizio Abba 44a7c12ad0 decode-events: counters for decode events errors
We want to add counters in order to track the number of times we hit a
decode event. A decode event is related to an error in the protocol
decoding over a certain packet.

This patch fist modifies the decode-event list, reordering it in order
to separate single packet events from stream-related events and adding
the prefix "decoder" to decode events.
The counters are created during the decode setup and the relative event
counter is increased every time a packet with the flag PKT_IS_INVALID is
finalized in the decode phase
9 years ago
Eric Leblond b7bf299e3b af-packet: don't check GRO LRO on non ethernet
This way we avoid an error message when sniffing on a non Ethernet
device.
9 years ago
Eric Leblond 11eb1d7c1d af-packet: handle raw link
If no link layer header is reported then it is a raw header.
9 years ago
Eric Leblond 994bc15c2a af-packet: disable most code when not built in
When af-packet is not build we can avoid to build a large amount
of code.
9 years ago
Victor Julien e4059fb541 stream: fix stream.inline default
If stream.inline setting was missing it would default to IDS.

This patch changes the default to 'auto', meaning that in IPS mode
the stream engine also uses IPS mode and in IDS mode it's still in
IDS mode.

Bug #1570
9 years ago
Victor Julien bda9869af7 dns: turn debug BUG_ON's into events 9 years ago
Victor Julien c0b16fa2bb detect: allow for more than 64k mpm rules 9 years ago
Victor Julien 8f4eff5f50 defrag: fix bad packet error handling
When defrag creates a new reassembled IP packet, it then passes this
packet to the IP decoder. If this decoder returns an error the packet
is returned back to the packet pool with a call to TmqhOutputPacketpool

This lead to the first problem. The returned packet had it's p->root
pointer set, and it's PKT_TUNNEL flag set. This could cause problems
in TmqhOutputPacketpool, as this may reference the packet referenced
in p->root.

The second and more glaring problem is that the packet that was
returned to the packetpool, was still returned by the Defrag function
and processed further. It would then at the end of it's processing
be returned to the packet pool, which at this point already had a
reference to this packet.

This patch fixes both issues by unsetting the tunnel references and
returning NULL from Defrag in this case.
9 years ago
Victor Julien 4e90b54666 packet pool: make sure packet next ptr is always set 9 years ago
Victor Julien 3ac1468c1b packet pool: turn bad check into BUG_ON 9 years ago
Andreas Herz c8399e8c51 configure: bypass libpcre 8.35 check
When --with-libpcre-libraries is used we skip the libpcre 8.35 check
since pkg-config might still point to the 8.35 version installed
although newer version was passed with --with-libpcre-libraries.
9 years ago
Eric Leblond f001c10ac4 util-radix-tree: fix memleak
Logic used when adding a new prefix to a node was not correct
as we were allocating a prefix that could be at the end unused.
This patch is updating the code to have a complete creation to
be done if and only if we are needing the complete object. In
the other cases, it was enough to use the function input values.

This fixes:

104 (48 direct, 56 indirect) bytes in 2 blocks are definitely lost in loss record 184 of 327
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x9C2DAD: SCRadixCreatePrefix (util-radix-tree.c:144)
   by 0x9AFA5B: SCRadixAddKey (util-radix-tree.c:522)
   by 0x9B1A4D: SCRadixAddKeyIPV4Netblock (util-radix-tree.c:897)
   by 0x67C824: IPOnlyPrepare (detect-engine-iponly.c:1197)
   by 0x55172B: SigAddressPrepareStage2 (detect.c:3534)
   by 0x5486F4: SigGroupBuild (detect.c:4671)
   by 0x547C87: SigLoadSignatures (detect.c:538)
   by 0x8FB5D0: LoadSignatures (suricata.c:1976)
   by 0x8F3B32: main (suricata.c:2342)
9 years ago
Eric Leblond 9c7e18dc89 detect-ssl-state: fix memleak 9 years ago
Eric Leblond fe81bdc213 detect-ssl-version: simplify code and fix memlea 9 years ago
Eric Leblond 50ea76a88b detect-tls: fix memleaks 9 years ago
Eric Leblond a53aef9c57 tm-threads: unify thread names handling
TmThreadCreate copy string provided as name for threads to
avoid any issue is a non allocated string is used.

This patch also introduce TmThreadSetGroupName function. This
function is used to be sure we have an allocation when
assigning the thread group name. This way we can free allocated
memory at exit.

Both code changes have required some fixes in different parts of
the code to be in sync with the new API.

Good point about these changes is that it fixes an inconsistency
were some names were not allocated and some were.
9 years ago
Eric Leblond d367750633 defrag: free defrag tree at exit
This fixes:

72 bytes in 3 blocks are definitely lost in loss record 153 of 316
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x9AF041: SCRadixCreateRadixTree (util-radix-tree.c:430)
   by 0x50FF5D: DefragPolicyLoadFromConfig (defrag-config.c:138)
   by 0x5129F5: DefragInit (defrag.c:962)
   by 0x87ECFD: UnixSocketPcapFilesCheck (runmode-unix-socket.c:386)
   by 0x90FEC0: UnixCommandBackgroundTasks (unix-manager.c:430)
   by 0x913C6D: UnixManager (unix-manager.c:980)
   by 0x9072F3: TmThreadsManagement (tm-threads.c:602)
   by 0x68DE283: start_thread (pthread_create.c:333)
   by 0x80A6A4C: clone (in /lib/x86_64-linux-gnu/libc-2.21.so)
9 years ago
Eric Leblond 55a8f3ce1d output-stats: fix memleak
This fixes:

16 bytes in 2 blocks are definitely lost in loss record 69 of 319
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x85955D: OutputStatsLogThreadInit (output-stats.c:118)
   by 0x4CAE13: StatsMgmtThread (counters.c:352)
   by 0x68DE283: start_thread (pthread_create.c:333)
   by 0x80A6A4C: clone (in /lib/x86_64-linux-gnu/libc-2.21.so)
9 years ago
Eric Leblond c2e2174942 tmqh-flow: fix memleak in TmqhFlowCtx cleaning
This fixes:

96 bytes in 4 blocks are definitely lost in loss record 178 of 320
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x8FF88C: TmqhOutputFlowSetupCtx (tmqh-flow.c:163)
   by 0x908D5F: TmThreadCreate (tm-threads.c:1097)
   by 0x909A62: TmThreadCreatePacketHandler (tm-threads.c:1156)
   by 0x8790CF: RunModeFilePcapAutoFp (runmode-pcap-file.c:188)
   by 0x8837CB: RunModeDispatch (runmodes.c:372)
   by 0x87F2A5: UnixSocketPcapFilesCheck (runmode-unix-socket.c:393)
   by 0x910460: UnixCommandBackgroundTasks (unix-manager.c:430)
   by 0x91420D: UnixManager (unix-manager.c:980)
   by 0x907853: TmThreadsManagement (tm-threads.c:602)
   by 0x68DE283: start_thread (pthread_create.c:333)
   by 0x80A6A4C: clone (in /lib/x86_64-linux-gnu/libc-2.21.so)
9 years ago
Eric Leblond 41e540f2f1 tm-threads: fix memleak
Fix cleaning of threads where mutex and condition where not freed.

This fixes:

352 (192 direct, 160 indirect) bytes in 4 blocks are definitely lost in loss record 301 of 327
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x909404: TmThreadInitMC (tm-threads.c:1764)
   by 0x908DE7: TmThreadCreate (tm-threads.c:1120)
   by 0x90A326: TmThreadCreateMgmtThread (tm-threads.c:1183)
   by 0x4CA0AD: StatsSpawnThreads (counters.c:856)
   by 0x87F254: UnixSocketPcapFilesCheck (runmode-unix-socket.c:396)
   by 0x910330: UnixCommandBackgroundTasks (unix-manager.c:430)
   by 0x9140DD: UnixManager (unix-manager.c:980)
   by 0x9077F3: TmThreadsManagement (tm-threads.c:600)
   by 0x68DE283: start_thread (pthread_create.c:333)
   by 0x80A6A4C: clone (in /lib/x86_64-linux-gnu/libc-2.21.so)
9 years ago
Eric Leblond de6a37f17b tm-queue: unify queue name handling
Queue name was sometimes allocated and sometimes not. This
patch updates the behavior of creation function so it is
always allocated. This way we can free it at exit and fix
memory leak.

This fixes:

900 bytes in 110 blocks are definitely lost in loss record 322 of 329
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x803E0A9: strdup (in /lib/x86_64-linux-gnu/libc-2.21.so)
   by 0x90090E: StoreQueueId (tmqh-flow.c:112)
   by 0x8FFEA8: TmqhOutputFlowSetupCtx (tmqh-flow.c:180)
   by 0x908C7F: TmThreadCreate (tm-threads.c:1095)
   by 0x909982: TmThreadCreatePacketHandler (tm-threads.c:1154)
   by 0x87906F: RunModeFilePcapAutoFp (runmode-pcap-file.c:188)
   by 0x88376B: RunModeDispatch (runmodes.c:372)
   by 0x87F245: UnixSocketPcapFilesCheck (runmode-unix-socket.c:393)
   by 0x9102B0: UnixCommandBackgroundTasks (unix-manager.c:430)
   by 0x91405D: UnixManager (unix-manager.c:980)
   by 0x907773: TmThreadsManagement (tm-threads.c:600)

tm-queue: fix logic WIP
9 years ago
Eric Leblond f34fe85cfe unix-manager: fix memleak at exit
Buffer allocated for UnixClient was not correctly freed.
9 years ago
Eric Leblond f1f2f0d478 util-host-info: fix memleaks
This fixes pcre related memory leak in SCKernelVersionIsAtLeast
function.
9 years ago
Eric Leblond 606ac17c57 util: get rid of json_array_append
This function is causing a memleak because it is necessary to clean
up after usage.

This fixes at least:

37 (32 direct, 5 indirect) bytes in 1 blocks are definitely lost in loss record 104 of 394
   at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x66D0C7B: ??? (in /usr/lib/x86_64-linux-gnu/libjansson.so.4.7.0)
   by 0x943584: LiveDeviceIfaceList (util-device.c:264)
   by 0x910889: UnixCommandExecute (unix-manager.c:486)
   by 0x910D7E: UnixCommandRun (unix-manager.c:545)
   by 0x911193: UnixMain (unix-manager.c:593)
   by 0x913CC7: UnixManager (unix-manager.c:961)
   by 0x907753: TmThreadsManagement (tm-threads.c:600)
   by 0x68DE283: start_thread (pthread_create.c:333)
   by 0x80A6A4C: clone (in /lib/x86_64-linux-gnu/libc-2.21.so)
9 years ago
Eric Leblond cc942b4fb8 runmodes: fix memleak
active_runmode value was leaking in unix socket mode.
9 years ago