--- /dev/null
+Tests Lua's accessing variables from byte_extract and byte_math in lua match scripts.
--- /dev/null
+function init(args)
+ local needs = {}
+ needs["bytevar"] = {"var1", "var2"}
+ return needs
+end
+
+function match(args)
+ local var1 = SCByteVarGet(0)
+ local var2 = SCByteVarGet(1)
+
+ if string.pack(">i4", var1) == "HTTP" and string.pack(">i4", var2) == "/1.1" then
+ return 1
+ else
+ return 0
+ end
+end
--- /dev/null
+function init(args)
+ local needs = {}
+ needs["bytevar"] = {"var2"}
+ return needs
+end
+
+function match(args)
+ local var2 = SCByteVarGet(0)
+
+ if string.pack(">i4", var2) == "HTTP" then
+ return 1
+ else
+ return 0
+ end
+end
--- /dev/null
+%YAML 1.1
+---
+
+include: ../../etc/suricata-4.0.3.yaml
\ No newline at end of file
--- /dev/null
+alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; byte_extract:4,0,var1; byte_extract:4,4,var2; lua:lua-byte-extract.lua; sid:1; rev:7;)
+alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; byte_math: bytes 4, offset 0, oper +, rvalue 0, result var2; lua:lua-byte-math.lua; sid:2; rev:7;)
--- /dev/null
+requires:
+ features:
+ - HAVE_LUA
+
+checks:
+ - filter:
+ count: 1
+ match:
+ alert.signature_id: 1
+ - filter:
+ count: 1
+ match:
+ alert.signature_id: 2
+