detect/stream_size: code cleanups

pull/3399/head
Victor Julien 7 years ago
parent f30f038179
commit e6a009ae7f

@ -78,7 +78,9 @@ void DetectStreamSizeRegister(void)
* \retval 1 on success and 0 on failure. * \retval 1 on success and 0 on failure.
*/ */
static int DetectStreamSizeCompare (uint32_t diff, uint32_t stream_size, uint8_t mode) { static int DetectStreamSizeCompare (uint32_t diff, uint32_t stream_size, uint8_t mode)
{
SCLogDebug("diff %u stream_size %u mode %u", diff, stream_size, mode);
int ret = 0; int ret = 0;
switch (mode) { switch (mode) {
@ -108,7 +110,7 @@ static int DetectStreamSizeCompare (uint32_t diff, uint32_t stream_size, uint8_t
break; break;
} }
return ret; SCReturnInt(ret);
} }
/** /**
@ -126,22 +128,18 @@ static int DetectStreamSizeMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
const Signature *s, const SigMatchCtx *ctx) const Signature *s, const SigMatchCtx *ctx)
{ {
int ret = 0;
const DetectStreamSizeData *sd = (const DetectStreamSizeData *)ctx; const DetectStreamSizeData *sd = (const DetectStreamSizeData *)ctx;
if (!(PKT_IS_TCP(p))) if (!(PKT_IS_TCP(p)))
return ret; return 0;
if (p->flow == NULL || p->flow->protoctx == NULL)
return 0;
const TcpSession *ssn = (TcpSession *)p->flow->protoctx;
int ret = 0;
uint32_t csdiff = 0; uint32_t csdiff = 0;
uint32_t ssdiff = 0; uint32_t ssdiff = 0;
if (p->flow == NULL)
return ret;
TcpSession *ssn = (TcpSession *)p->flow->protoctx;
if (ssn == NULL)
return ret;
if (sd->flags & STREAM_SIZE_SERVER) { if (sd->flags & STREAM_SIZE_SERVER) {
/* get the server stream size */ /* get the server stream size */
ssdiff = ssn->server.next_seq - ssn->server.isn; ssdiff = ssn->server.next_seq - ssn->server.isn;
@ -155,17 +153,21 @@ static int DetectStreamSizeMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
} else if (sd->flags & STREAM_SIZE_BOTH) { } else if (sd->flags & STREAM_SIZE_BOTH) {
ssdiff = ssn->server.next_seq - ssn->server.isn; ssdiff = ssn->server.next_seq - ssn->server.isn;
csdiff = ssn->client.next_seq - ssn->client.isn; csdiff = ssn->client.next_seq - ssn->client.isn;
if (DetectStreamSizeCompare(ssdiff, sd->ssize, sd->mode) && DetectStreamSizeCompare(csdiff, sd->ssize, sd->mode))
if (DetectStreamSizeCompare(ssdiff, sd->ssize, sd->mode) &&
DetectStreamSizeCompare(csdiff, sd->ssize, sd->mode))
ret = 1; ret = 1;
} else if (sd->flags & STREAM_SIZE_EITHER) { } else if (sd->flags & STREAM_SIZE_EITHER) {
ssdiff = ssn->server.next_seq - ssn->server.isn; ssdiff = ssn->server.next_seq - ssn->server.isn;
csdiff = ssn->client.next_seq - ssn->client.isn; csdiff = ssn->client.next_seq - ssn->client.isn;
if (DetectStreamSizeCompare(ssdiff, sd->ssize, sd->mode) || DetectStreamSizeCompare(csdiff, sd->ssize, sd->mode))
if (DetectStreamSizeCompare(ssdiff, sd->ssize, sd->mode) ||
DetectStreamSizeCompare(csdiff, sd->ssize, sd->mode))
ret = 1; ret = 1;
} }
return ret; SCReturnInt(ret);
} }
/** /**

Loading…
Cancel
Save