break;
case TCP_OPT_SACK:
SCLogDebug("SACK option, len %u", olen);
- if ((olen != 2) &&
- (olen < TCP_OPT_SACK_MIN_LEN ||
- olen > TCP_OPT_SACK_MAX_LEN ||
- !((olen - 2) % 8 == 0)))
- {
- ENGINE_SET_EVENT(p,TCP_OPT_INVALID_LEN);
+ if (olen == 2) {
+ /* useless, but common empty SACK record */
+ } else if (olen < TCP_OPT_SACK_MIN_LEN || olen > TCP_OPT_SACK_MAX_LEN ||
+ !((olen - 2) % 8 == 0)) {
+ ENGINE_SET_EVENT(p, TCP_OPT_INVALID_LEN);
} else {
if (p->l4.vars.tcp.sack_set) {
ENGINE_SET_EVENT(p,TCP_OPT_DUPLICATE);