detect: fix overflows in SetupU8Hash

For instance ">255" resulted in overflow
pull/5948/head
Philippe Antoine 5 years ago committed by Victor Julien
parent eb460cf78d
commit 2d765d6c68

@ -291,29 +291,34 @@ static void SetupU8Hash(DetectEngineCtx *de_ctx, HashListTable *hash_table,
break; break;
case PREFILTER_U8HASH_MODE_LT: case PREFILTER_U8HASH_MODE_LT:
{ {
uint8_t v = ctx->v1.u8[1] - 1; uint8_t v = ctx->v1.u8[1];
do { while (v > 0) {
v--;
counts[v] += ctx->cnt; counts[v] += ctx->cnt;
} while (v--); }
break; break;
} }
case PREFILTER_U8HASH_MODE_GT: case PREFILTER_U8HASH_MODE_GT:
{ {
int v = ctx->v1.u8[1] + 1; uint8_t v = ctx->v1.u8[1];
do { while (v < UINT8_MAX) {
v++;
counts[v] += ctx->cnt; counts[v] += ctx->cnt;
} while (++v < 256); }
break; break;
} }
case PREFILTER_U8HASH_MODE_RA: case PREFILTER_U8HASH_MODE_RA:
{ {
int v = ctx->v1.u8[1] + 1; if (ctx->v1.u8[1] < ctx->v1.u8[2]) {
do { // ctx->v1.u8[1] is not UINT8_MAX
counts[v] += ctx->cnt; uint8_t v = ctx->v1.u8[1] + 1;
} while (++v < ctx->v1.u8[2]); while (v < ctx->v1.u8[2]) {
counts[v] += ctx->cnt;
v++;
}
}
break; break;
} }
} }

Loading…
Cancel
Save