The code to get the rule group (sgh) would return the group for
IP proto 0 instead of nothing. This lead to certain types of rules
unintentionally matching (False Positive).
Since the packets weren't actually IP, the logged alert records
were missing the IP header.
Bug #2017.
* the decoder events sgh we have. */
if (p->proto == 0 && p->events.cnt > 0) {
SCReturnPtr(de_ctx->decoder_event_sgh, "SigGroupHead");
+ } else if (p->proto == 0) {
+ if (!(PKT_IS_IPV4(p) || PKT_IS_IPV6(p))) {
+ /* not IP, so nothing to do */
+ SCReturnPtr(NULL, "SigGroupHead");
+ }
}
/* select the flow_gh */