From cd038419fdea04542c57a38c55f7147ca1839fca Mon Sep 17 00:00:00 2001 From: Zopieux Date: Thu, 18 Jun 2015 11:26:53 +0200 Subject: [PATCH] stream_size operator comparison (fix issue #1488) `DetectStreamSizeParse` was first checking if mode[0] is '<', which is true for both '<' and '<=', thus '<=' (and resp. '>=') is never matched. This patch does the `strcmp` to '<=' (resp. '>=') within the if block of '<' (resp. '>') to fix #1488. --- src/detect-stream_size.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/detect-stream_size.c b/src/detect-stream_size.c index bec2edce6e..c3eaad90f0 100644 --- a/src/detect-stream_size.c +++ b/src/detect-stream_size.c @@ -244,19 +244,19 @@ DetectStreamSizeData *DetectStreamSizeParse (char *streamstr) if (strlen(mode) == 0) goto error; - if (mode[0] == '<') + if (mode[0] == '=') { + sd->mode = DETECTSSIZE_EQ; + } else if (mode[0] == '<') { sd->mode = DETECTSSIZE_LT; - else if (strcmp("<=", mode) == 0) - sd->mode = DETECTSSIZE_LEQ; - else if (mode[0] == '>') + if (strcmp("<=", mode) == 0) + sd->mode = DETECTSSIZE_LEQ; + } else if (mode[0] == '>') { sd->mode = DETECTSSIZE_GT; - else if (strcmp(">=", mode) == 0) - sd->mode = DETECTSSIZE_GEQ; - else if (strcmp("!=", mode) == 0) + if (strcmp(">=", mode) == 0) + sd->mode = DETECTSSIZE_GEQ; + } else if (strcmp("!=", mode) == 0) { sd->mode = DETECTSSIZE_NEQ; - else if (mode[0] == '=') - sd->mode = DETECTSSIZE_EQ; - else { + } else { SCLogError(SC_ERR_INVALID_OPERATOR, "Invalid operator"); goto error; }