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