BUG_ON(extbytes > len);
ptr += extbytes;
- det_ctx->buffer_offset = ptr - payload;
switch (data->oper) {
case DETECT_BYTEMATH_OPERATOR_NONE:
val -= rvalue;
break;
case DETECT_BYTEMATH_OPERATOR_DIVIDE:
+ if (rvalue == 0) {
+ SCLogDebug("avoiding division by zero");
+ return 0;
+ }
val /= rvalue;
break;
case DETECT_BYTEMATH_OPERATOR_MULTIPLY:
break;
}
+ det_ctx->buffer_offset = ptr - payload;
+
if (data->flags & DETECT_BYTEMATH_FLAG_BITMASK) {
val &= data->bitmask_val;
if (val && data->bitmask_shift_count) {
/*
* byte_extract: Extract 1 byte from offset 0 --> 0x38
- * byte_math: Extract 1 byte from offset 1 (0x38)
+ * byte_math: Extract 1 byte from offset -1 (0x38)
* Add 0x38 + 0x38 = 112 (0x70)
* byte_test: Compare 2 bytes at offset 13 bytes from last
* match and compare with 0x70
UtRegisterTest("DetectByteMathParseTest14", DetectByteMathParseTest14);
UtRegisterTest("DetectByteMathParseTest15", DetectByteMathParseTest15);
UtRegisterTest("DetectByteMathParseTest16", DetectByteMathParseTest16);
- UtRegisterTest("DetectByteMathPacket01", DetectByteMathPacket01);
+ UtRegisterTest("DetectByteMathPacket01", DetectByteMathPacket01);
UtRegisterTest("DetectByteMathPacket02", DetectByteMathPacket02);
UtRegisterTest("DetectByteMathContext01", DetectByteMathContext01);
}