]>
git.ipfire.org Git - thirdparty/suricata.git/log
Anoop Saldanha [Sun, 29 Sep 2013 16:45:46 +0000 (22:15 +0530)]
Fix a leak in probing parsers. We were freeing just the head of the list,
instead of all the members.
Anoop Saldanha [Sun, 29 Sep 2013 16:45:21 +0000 (22:15 +0530)]
Fix a leak in app layer parser proto code. Free the proto signatures
allocated internally for PM parser.
Anoop Saldanha [Sun, 29 Sep 2013 16:41:34 +0000 (22:11 +0530)]
Fix mem leak in b2g.
Anoop Saldanha [Sat, 28 Sep 2013 07:38:13 +0000 (13:08 +0530)]
Remove unused vars alp_content_module_handle and proto_map from
struct AlpProtoDetectCtx.
Anoop Saldanha [Sat, 28 Sep 2013 06:50:59 +0000 (12:20 +0530)]
Remove the unused flow flags - FLOW_TS_PM_PP_ALPROTO_DETECT_DONE and
FLOW_TC_PM_PP_ALPROTO_DETECT_DONE.
Anoop Saldanha [Sat, 28 Sep 2013 03:18:47 +0000 (08:48 +0530)]
Reset some flow flags when port numbers are re-used and we re-use the
flow as a part of a new session.
Anoop Saldanha [Thu, 12 Sep 2013 14:52:52 +0000 (20:22 +0530)]
Remove the smtp parser restriction that it accepts data only in to client
direction first.
Anoop Saldanha [Wed, 11 Sep 2013 10:00:26 +0000 (15:30 +0530)]
Fix compilation failure when we don't enable unittests. Got to #ifdef
ALPROTO_TEST.
Anoop Saldanha [Wed, 11 Sep 2013 07:22:47 +0000 (12:52 +0530)]
Update stream inline to use the improved app proto detection.
Anoop Saldanha [Mon, 9 Sep 2013 12:59:58 +0000 (18:29 +0530)]
Cosmetic changes to app parser struct.
Removed a flag parameter introuced earlier to indicate the data
that is first acceptable by the parser. We now use a differently
named parameter to carry out the same activity.
Anoop Saldanha [Mon, 9 Sep 2013 12:40:33 +0000 (18:10 +0530)]
Cosmetic changes to code. Introduce human readabel flag values for some constants. Here the parameter in question is "data_first_seen_dir" for session context.
Anoop Saldanha [Mon, 9 Sep 2013 11:49:32 +0000 (17:19 +0530)]
indentation fix.
Anoop Saldanha [Mon, 9 Sep 2013 11:25:13 +0000 (16:55 +0530)]
If we have proto mismatch from 2 directions, use one of the protos, instead of erroring out and not sending the data further to the parser.
The logic we use currently is if we have already sent some data to
a parser before we figure out we have a proto mismatch, we use the
proto from the first direction from which we have already sent the
data to the parser, else we stick to the the to client direction.
Anoop Saldanha [Mon, 9 Sep 2013 06:34:20 +0000 (12:04 +0530)]
Introduce convenience macro to set Stream app proto completion flag.
Anoop Saldanha [Sat, 31 Aug 2013 02:36:26 +0000 (08:06 +0530)]
Rename function pointer var to use the FuncPtr typing convention. Resupply "dns" as the alproto name for ALPROTO_DNS.
Anoop Saldanha [Fri, 30 Aug 2013 10:31:33 +0000 (16:01 +0530)]
Add unittest to test for http ambiguous host header.
Previously we would not check the port part of the host from the uri
hostname, while we did use the port part from the host header, leading
to FPs.
Anoop Saldanha [Mon, 19 Aug 2013 15:22:17 +0000 (20:52 +0530)]
Update rule engine relationship with regard to setting ip protocol between specifying protocol after action, ip_proto and app-layer-protocol.
Now we can specify alproto, ip_proto combinations this way
alert dns (ip_proto:[tcp/udp];)
alert ip (app-layer-protocol:dns;)
alert ip (app-layer-protocol:dns; ip_proto:tcp;)
alert tcp (app-layer-protocol:dns:)
so on. Neater than using dnstcp/dnsudp.
This is related to feature #424.
Anoop Saldanha [Mon, 19 Aug 2013 05:36:30 +0000 (11:06 +0530)]
alert ipv4 and alert ipv6 specified proto rules should be treated and PROTO_ANY just like how we treat alert ip rules.
Anoop Saldanha [Sun, 18 Aug 2013 14:06:55 +0000 (19:36 +0530)]
Introduce a separate inspection engine for app events.
Anoop Saldanha [Sat, 17 Aug 2013 12:19:47 +0000 (17:49 +0530)]
Update htp event handler to both warning and error events regardless of any conditions.
Anoop Saldanha [Fri, 16 Aug 2013 14:38:53 +0000 (20:08 +0530)]
Add app layer protocol packet event detection support.
Anoop Saldanha [Sun, 11 Aug 2013 12:46:53 +0000 (18:16 +0530)]
Add and use EventGetInfo for getting info on an event.
Also update existing parsers and app-layer-event Setup to use this.
Anoop Saldanha [Mon, 5 Aug 2013 14:37:28 +0000 (20:07 +0530)]
Fix duplicate packet decoder events. Add event entries that were missing as well.
Anoop Saldanha [Mon, 5 Aug 2013 13:27:44 +0000 (18:57 +0530)]
validate dns sigs that are reported as plain dns and not dnsudp or dnstcp.
Anoop Saldanha [Mon, 5 Aug 2013 05:46:05 +0000 (11:16 +0530)]
Move app event module registration as a part of app layer proto table.
Anoop Saldanha [Sun, 4 Aug 2013 12:08:54 +0000 (17:38 +0530)]
code cleanup.
Anoop Saldanha [Sun, 4 Aug 2013 06:38:59 +0000 (12:08 +0530)]
App layer protocol detection updated and improved. We now use
confirmation from both directions and set events if there's a mismatch
between the 2 directions.
FPs from corrupt flows have disappeared with this.
Anoop Saldanha [Sat, 3 Aug 2013 20:01:32 +0000 (01:31 +0530)]
Replace ssn appproto_detection_completed flag with individual stream ones.
Anoop Saldanha [Sat, 3 Aug 2013 19:40:10 +0000 (01:10 +0530)]
Provide convenience macros for setting flow flags on protocol matching by
PM and PP phase.
Replace the areas of the code that would otherwise rely on setting/reading
these flags with these macros.
Other minor tweaks to some api calls.
Anoop Saldanha [Sat, 3 Aug 2013 19:22:45 +0000 (00:52 +0530)]
update pmp to return whole set of matches, rather than a single match.
Anoop Saldanha [Sat, 3 Aug 2013 18:33:46 +0000 (00:03 +0530)]
code cleanup.
Anoop Saldanha [Sat, 3 Aug 2013 18:33:23 +0000 (00:03 +0530)]
Introduce detection parser function pointer.
Anoop Saldanha [Sat, 3 Aug 2013 14:16:46 +0000 (19:46 +0530)]
feature #727 - Add support for app-layer-protocol:<protocol> keyword
Anoop Saldanha [Sat, 3 Aug 2013 09:23:13 +0000 (14:53 +0530)]
Allow detection ports for alproto to be specified via the conf file.
To understand the option have a look at the option
app-layer.protocols.tls.detection-ports
Anoop Saldanha [Fri, 2 Aug 2013 16:12:58 +0000 (21:42 +0530)]
Introduce new options into the conf file to enable/disable -
1. Proto detection
2. Parsers
For app layer protocols.
libhtp has now been moved to the section under app-layer.protocols.http,
but we still provide backward compatibility with older conf files.
Anoop Saldanha [Fri, 2 Aug 2013 09:53:35 +0000 (15:23 +0530)]
Now supports accepting port addresses as strings, like the ones accepted in our rules. As a consequence we now accept port range, and other such combination. Support PP for ports based on ipproto as well.
Victor Julien [Fri, 27 Sep 2013 12:59:19 +0000 (14:59 +0200)]
Properly clean up decoder event rules
Addresses:
~~Dr.M~~ Error #3: LEAK 120 direct bytes 0x08a26ac8-0x08a26b40 + 1871 indirect bytes
~~Dr.M~~ # 0 replace_malloc [/work/drmemory_package/common/alloc_replace.c:2292]
~~Dr.M~~ # 1 SigGroupHeadAlloc [/home/victor/dev/oisf/src/detect-engine-siggroup.c:144]
~~Dr.M~~ # 2 SigGroupHeadAppendSig [/home/victor/dev/oisf/src/detect-engine-siggroup.c:1014]
~~Dr.M~~ # 3 DetectEngineAddDecoderEventSig [/home/victor/dev/oisf/src/detect.c:3026]
~~Dr.M~~ # 4 SigAddressPrepareStage2 [/home/victor/dev/oisf/src/detect.c:3075]
~~Dr.M~~ # 5 SigGroupBuild [/home/victor/dev/oisf/src/detect.c:4311]
~~Dr.M~~ # 6 SigLoadSignatures [/home/victor/dev/oisf/src/detect.c:464]
~~Dr.M~~ # 7 LoadSignatures [/home/victor/dev/oisf/src/suricata.c:1706]
~~Dr.M~~ # 8 main [/home/victor/dev/oisf/src/suricata.c:1994]
Victor Julien [Fri, 27 Sep 2013 12:46:30 +0000 (14:46 +0200)]
ipproto: improve cleanup
To address:
~~Dr.M~~ Error #2: LEAK 16 direct bytes 0x08399688-0x08399698 + 2 indirect bytes
~~Dr.M~~ # 0 replace_malloc [/work/drmemory_package/common/alloc_replace.c:2292]
~~Dr.M~~ # 1 SigMatchAlloc [/home/victor/dev/oisf/src/detect-parse.c:201]
~~Dr.M~~ # 2 DetectIPProtoSetup [/home/victor/dev/oisf/src/detect-ipproto.c:523]
~~Dr.M~~ # 3 SigParseOptions [/home/victor/dev/oisf/src/detect-parse.c:510]
~~Dr.M~~ # 4 SigParseOptions [/home/victor/dev/oisf/src/detect-parse.c:523]
~~Dr.M~~ # 5 SigParse [/home/victor/dev/oisf/src/detect-parse.c:881]
~~Dr.M~~ # 6 SigInitHelper [/home/victor/dev/oisf/src/detect-parse.c:1309]
~~Dr.M~~ # 7 SigInit [/home/victor/dev/oisf/src/detect-parse.c:1456]
~~Dr.M~~ # 8 DetectEngineAppendSig [/home/victor/dev/oisf/src/detect-parse.c:1728]
~~Dr.M~~ # 9 DetectLoadSigFile [/home/victor/dev/oisf/src/detect.c:334]
~~Dr.M~~ #10 SigLoadSignatures [/home/victor/dev/oisf/src/detect.c:422]
~~Dr.M~~ #11 LoadSignatures [/home/victor/dev/oisf/src/suricata.c:1706]
Victor Julien [Fri, 27 Sep 2013 12:45:37 +0000 (14:45 +0200)]
Improve memory cleanup for decoder-events
To address:
~~Dr.M~~ Error #1: LEAK 1 direct bytes 0x0892c108-0x0892c109 + 0 indirect bytes
~~Dr.M~~ # 0 replace_malloc [/work/drmemory_package/common/alloc_replace.c:2292]
~~Dr.M~~ # 1 DetectEngineEventParse [/home/victor/dev/oisf/src/detect-engine-event.c:173]
~~Dr.M~~ # 2 _DetectEngineEventSetup [/home/victor/dev/oisf/src/detect-engine-event.c:204]
~~Dr.M~~ # 3 DetectDecodeEventSetup [/home/victor/dev/oisf/src/detect-engine-event.c:248]
~~Dr.M~~ # 4 SigParseOptions [/home/victor/dev/oisf/src/detect-parse.c:510]
~~Dr.M~~ # 5 SigParseOptions [/home/victor/dev/oisf/src/detect-parse.c:523]
~~Dr.M~~ # 6 SigParse [/home/victor/dev/oisf/src/detect-parse.c:881]
~~Dr.M~~ # 7 SigInitHelper [/home/victor/dev/oisf/src/detect-parse.c:1309]
~~Dr.M~~ # 8 SigInit [/home/victor/dev/oisf/src/detect-parse.c:1456]
~~Dr.M~~ # 9 DetectEngineAppendSig [/home/victor/dev/oisf/src/detect-parse.c:1728]
~~Dr.M~~ #10 DetectLoadSigFile [/home/victor/dev/oisf/src/detect.c:334]
~~Dr.M~~ #11 SigLoadSignatures [/home/victor/dev/oisf/src/detect.c:422]
Victor Julien [Fri, 27 Sep 2013 10:13:21 +0000 (12:13 +0200)]
Add DrMemory suppress file
The suppress file currently suppresses:
- bug #978
- bug #979
Plus a seemingly harmeless warning that happens during libmagic init.
DrMemory is a valgrind like memory checker: http://www.drmemory.org/
Victor Julien [Fri, 27 Sep 2013 09:42:42 +0000 (11:42 +0200)]
Fix small leak in ports validation at startup
Victor Julien [Fri, 27 Sep 2013 08:19:16 +0000 (10:19 +0200)]
flowint: further setup fixes and cleanups
Victor Julien [Thu, 26 Sep 2013 16:34:36 +0000 (18:34 +0200)]
counters: consolidate counters after all ThreadInit functions of a thread have run. This prevents duplicate and overwriting memory allocations.
Victor Julien [Thu, 26 Sep 2013 16:33:33 +0000 (18:33 +0200)]
Fix tests that didn't expect radix to be freed
Victor Julien [Thu, 26 Sep 2013 13:35:46 +0000 (15:35 +0200)]
radix: actually free a tree in SCRadixReleaseRadixTree
Victor Julien [Thu, 26 Sep 2013 13:28:56 +0000 (15:28 +0200)]
flowint: fix compile warning
Victor Julien [Thu, 26 Sep 2013 13:23:48 +0000 (15:23 +0200)]
flowint: fix setup memory leaks
Victor Julien [Thu, 26 Sep 2013 13:06:57 +0000 (15:06 +0200)]
ssh: fix memleaks during ssh.softwareversion init and cleanup
Victor Julien [Thu, 26 Sep 2013 12:58:41 +0000 (14:58 +0200)]
urilen: fix memory leak when freeing the rule
Anoop Saldanha [Wed, 25 Sep 2013 17:07:57 +0000 (22:37 +0530)]
fix for bug #973.
An alternative solution for bug #970.
For chopped patterns, which in it's whole is a duplicate of another
pattern we assign an unique content id.
Anoop Saldanha [Wed, 25 Sep 2013 17:03:57 +0000 (22:33 +0530)]
Unittest for bug #973.
Eric Leblond [Wed, 25 Sep 2013 19:22:11 +0000 (21:22 +0200)]
prscript: update code following buildbot upgrade
The authentication scheme did change on the buildbot due to a
software upgrade. This patch update prscript.py to fix the build
submission.
Eric Leblond [Wed, 11 Sep 2013 10:08:52 +0000 (12:08 +0200)]
prscript: support bigger PR
The script now looks for originan HEAD in 100 commits instead of 30.
It should be enough becasue a sane PR should not have 100 commits.
Eric Leblond [Wed, 11 Sep 2013 08:35:52 +0000 (10:35 +0200)]
prscript: display url where user can watch build
Victor Julien [Wed, 25 Sep 2013 18:06:53 +0000 (20:06 +0200)]
pcre: check for pcre_free_study, fall back to pcre_free if it unavailable
Victor Julien [Wed, 25 Sep 2013 08:49:45 +0000 (10:49 +0200)]
mpm: clean up stream thread ctx
Victor Julien [Wed, 25 Sep 2013 08:26:01 +0000 (10:26 +0200)]
profiling: properly clean up thread local memory.
Victor Julien [Wed, 25 Sep 2013 08:21:17 +0000 (10:21 +0200)]
profiling: don't alloc 0 bytes block if no rules are used
Victor Julien [Wed, 25 Sep 2013 08:19:09 +0000 (10:19 +0200)]
Properly cleanup NSS ctx
Victor Julien [Wed, 25 Sep 2013 08:15:30 +0000 (10:15 +0200)]
Change ParseSize api to not leak memory and only setup pcre once.
Victor Julien [Wed, 25 Sep 2013 08:14:46 +0000 (10:14 +0200)]
DNS: free TX events using proper function
Victor Julien [Tue, 24 Sep 2013 18:17:36 +0000 (20:17 +0200)]
Http: improve tx data cleanup
Victor Julien [Tue, 24 Sep 2013 18:00:21 +0000 (20:00 +0200)]
stream: clean up queue list in all cases
Victor Julien [Tue, 24 Sep 2013 17:59:54 +0000 (19:59 +0200)]
Http: fix memory leaks when cleaning up our per-tx storage
Victor Julien [Tue, 24 Sep 2013 17:59:07 +0000 (19:59 +0200)]
Dns: fix memory leak when events are set
Anoop Saldanha [Tue, 24 Sep 2013 06:01:37 +0000 (11:31 +0530)]
Add decoder event rule for tls event "invalid_ssl_record", which will now be available "app-layer-event:tls.invalid_ssl_record".
Anoop Saldanha [Fri, 13 Sep 2013 14:27:29 +0000 (19:57 +0530)]
bug #955 - Fix SSL parsing issue.
The parser wasn't carrying out a bounds check on record length while
in the middle of parsing a handshake. As a result we would step onto the
next record header and consider it a part of the current handshake.
- Contains an unittest to test the issue.
- Disable the duplicate parser unittest registration.
The issue came to light through an irregular ssl record, which was
reported by Sebastian Roschke, via CVE-2013-5919.
Thanks to Sebastian Roschke for reporting this issue.
Anoop Saldanha [Tue, 24 Sep 2013 07:59:20 +0000 (13:29 +0530)]
fix for bug #970(ac-gfbs).
Content strings that are a duplicate of a pattern from another sig, but
have a fast_pattern chop being applied, would end up being assigned the
same pattern id as the duplicate string. But the string supplied to the
mpm would be the chopped string, which might result in the state_table
output_state content entry being over-riden by the the fuller string at
the final state of the smaller content length, because of which during a
match we might end up inspecting the search buffer against the fuller
content pattern, instead of the chopped pattern, which would end up being
an inspection beyond the buffer bounds.
Anoop Saldanha [Tue, 24 Sep 2013 07:53:36 +0000 (13:23 +0530)]
Unittest to display bug #970(ac-gfbs).
Anoop Saldanha [Tue, 24 Sep 2013 07:56:45 +0000 (13:26 +0530)]
fix for bug #970(ac-bs).
Content strings that are a duplicate of a pattern from another sig, but
have a fast_pattern chop being applied, would end up being assigned the
same pattern id as the duplicate string. But the string supplied to the
mpm would be the chopped string, which might result in the state_table
output_state content entry being over-riden by the the fuller string at
the final state of the smaller content length, because of which during a
match we might end up inspecting the search buffer against the fuller
content pattern, instead of the chopped pattern, which would end up being
an inspection beyond the buffer bounds.
Anoop Saldanha [Tue, 24 Sep 2013 07:43:11 +0000 (13:13 +0530)]
Unittest to display bug #970(ac-bs).
Victor Julien [Mon, 23 Sep 2013 14:55:32 +0000 (16:55 +0200)]
Fix valgrind warning on memrchr unittest.
Anoop Saldanha [Mon, 23 Sep 2013 09:53:12 +0000 (15:23 +0530)]
fix for bug #970.
Content strings that are a duplicate of a pattern from another sig, but
have a fast_pattern chop being applied, would end up being assigned the
same pattern id as the duplicate string. But the string supplied to the
mpm would be the chopped string, which might result in the state_table
output_state content entry being over-riden by the the fuller string at
the final state of the smaller content length, because of which during a
match we might end up inspecting the search buffer against the fuller
content pattern, instead of the chopped pattern, which would end up being
an inspection beyond the buffer bounds.
Anoop Saldanha [Mon, 23 Sep 2013 14:24:24 +0000 (19:54 +0530)]
Unittest to display bug #970.
Victor Julien [Mon, 23 Sep 2013 11:08:03 +0000 (13:08 +0200)]
Add sanity checks for command line argument handling
Coverity
1075221 .
Normally getopt_long should cover this case, but can't hurt to
add in some extra checks.
Victor Julien [Fri, 20 Sep 2013 15:12:58 +0000 (17:12 +0200)]
Add a fallback memrchr implementation for those platforms that dont support it. Bug #963.
Victor Julien [Fri, 20 Sep 2013 13:59:43 +0000 (15:59 +0200)]
Suppress compiler warning about comparing signed and unsigned vars
Victor Julien [Fri, 20 Sep 2013 13:57:23 +0000 (15:57 +0200)]
Move header thread_affinity declaration to extern to avoid duplicate declarations.
Victor Julien [Fri, 20 Sep 2013 11:06:55 +0000 (13:06 +0200)]
Fix several compile and runtime warnings found by clang 3.2 with the -fsanitize=address option.
Victor Julien [Thu, 19 Sep 2013 10:01:20 +0000 (12:01 +0200)]
Tag: document in the code that 'tag' is compatible with ip only
Victor Julien [Thu, 19 Sep 2013 08:59:52 +0000 (10:59 +0200)]
Don't set tag on pseudo packets
Victor Julien [Thu, 19 Sep 2013 08:57:46 +0000 (10:57 +0200)]
unified2: fix tags not being logged. Bug #968
Anoop Saldanha [Thu, 29 Aug 2013 17:28:04 +0000 (22:58 +0530)]
Modify handling of negated content.
The old behaviour of returning a failure if we found a pattern while
matching on negated content is now changed to continuing searching
for other combinations where we don't find the pattern for the
negated content.
Thanks to Will Metcalf for reporting this.
Victor Julien [Mon, 16 Sep 2013 17:26:50 +0000 (19:26 +0200)]
Coverity
1038102 : remove dead code from host hash
Victor Julien [Mon, 16 Sep 2013 17:26:13 +0000 (19:26 +0200)]
Coverity
1038101 : remove dead code from host hash timeout code
Victor Julien [Mon, 16 Sep 2013 17:25:35 +0000 (19:25 +0200)]
Coverity
1038100 : remove dead code from flow hash timeout code(2)
Victor Julien [Mon, 16 Sep 2013 17:23:33 +0000 (19:23 +0200)]
Coverity
1038099 : remove dead code from flow hash timeout code
Victor Julien [Mon, 16 Sep 2013 16:31:05 +0000 (18:31 +0200)]
Coverity
1038098 : remove dead code from flow hash
Victor Julien [Mon, 16 Sep 2013 16:29:53 +0000 (18:29 +0200)]
Coverity
1038095 : remove dead code from defrag hash timeout code
Victor Julien [Mon, 16 Sep 2013 16:28:45 +0000 (18:28 +0200)]
Coverity
1038094 : remove dead code from defrag hash
Victor Julien [Mon, 16 Sep 2013 16:25:34 +0000 (18:25 +0200)]
Coverity
1038089 : error check fseek call
Victor Julien [Mon, 16 Sep 2013 16:15:49 +0000 (18:15 +0200)]
Coverity 400477: pcre_get_substring retval
Add missing return code check to pcre_get_substring call.
Victor Julien [Mon, 16 Sep 2013 15:13:02 +0000 (17:13 +0200)]
Coverity
1038129 fix
Don't leak memory on malloc error in b2gm mpm implementation.
Victor Julien [Mon, 16 Sep 2013 14:38:56 +0000 (16:38 +0200)]
Fix memory leak on invalid luajit signature. Coverity
1038520 .
Victor Julien [Mon, 16 Sep 2013 14:34:59 +0000 (16:34 +0200)]
geoip: never try to store more locations than possible (Coverity
1038517 )
Victor Julien [Mon, 16 Sep 2013 14:26:11 +0000 (16:26 +0200)]
Coverity
1038138 fix
Clean up parsing code to suppress Coverity:
Dereference before null check (REVERSE_INULL)
Proper checking was already done.
Victor Julien [Mon, 16 Sep 2013 14:24:15 +0000 (16:24 +0200)]
Coverity
1038134 fix
Cleaned up error check. "ipdup" can only be non-NULL there, so remove check
that confused coverity.
Victor Julien [Mon, 16 Sep 2013 14:22:24 +0000 (16:22 +0200)]
Coverity
1038135 fix
Small cleanup in the error handling. The extra null check confused
Coverity.
Victor Julien [Mon, 16 Sep 2013 14:18:52 +0000 (16:18 +0200)]
Coverity
1038133 fix
Clean up parsing code to suppress Coverity:
Dereference before null check (REVERSE_INULL)
Proper checking was already done.
Ken Steele [Mon, 16 Sep 2013 12:57:53 +0000 (08:57 -0400)]
Move SIMD implementations out of detect.c
Move SIMD the implementations of SigMatchSignaturesBuildMatchArray()
for SSE3 and Tile out of detect.c to reduce the size of the file.
Also moved SIMD unit tests to detect-simd.c