mirror of
https://github.com/mandiant/capa.git
synced 2025-12-23 07:28:34 -08:00
fixes 249
This commit is contained in:
@@ -262,7 +262,7 @@ def parse_description(s, value_type, description=None):
|
|||||||
raise InvalidRule(
|
raise InvalidRule(
|
||||||
"unexpected bytes value: byte sequences must be no larger than %s bytes" % MAX_BYTES_FEATURE_SIZE
|
"unexpected bytes value: byte sequences must be no larger than %s bytes" % MAX_BYTES_FEATURE_SIZE
|
||||||
)
|
)
|
||||||
elif value_type in {"number", "offset"}:
|
elif value_type in ("number", "offset") or value_type.startswith(("number/", "offset/")):
|
||||||
try:
|
try:
|
||||||
value = parse_int(value)
|
value = parse_int(value)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|||||||
@@ -483,6 +483,21 @@ def test_number_arch():
|
|||||||
assert r.evaluate({Number(2, arch=ARCH_X64): {1}}) == False
|
assert r.evaluate({Number(2, arch=ARCH_X64): {1}}) == False
|
||||||
|
|
||||||
|
|
||||||
|
def test_number_arch_symbol():
|
||||||
|
r = capa.rules.Rule.from_yaml(
|
||||||
|
textwrap.dedent(
|
||||||
|
"""
|
||||||
|
rule:
|
||||||
|
meta:
|
||||||
|
name: test rule
|
||||||
|
features:
|
||||||
|
- number/x32: 2 = some constant
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assert r.evaluate({Number(2, arch=ARCH_X32, description="some constant"): {1}}) == True
|
||||||
|
|
||||||
|
|
||||||
def test_offset_symbol():
|
def test_offset_symbol():
|
||||||
rule = textwrap.dedent(
|
rule = textwrap.dedent(
|
||||||
"""
|
"""
|
||||||
@@ -546,6 +561,21 @@ def test_offset_arch():
|
|||||||
assert r.evaluate({Offset(2, arch=ARCH_X64): {1}}) == False
|
assert r.evaluate({Offset(2, arch=ARCH_X64): {1}}) == False
|
||||||
|
|
||||||
|
|
||||||
|
def test_offset_arch_symbol():
|
||||||
|
r = capa.rules.Rule.from_yaml(
|
||||||
|
textwrap.dedent(
|
||||||
|
"""
|
||||||
|
rule:
|
||||||
|
meta:
|
||||||
|
name: test rule
|
||||||
|
features:
|
||||||
|
- offset/x32: 2 = some constant
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assert r.evaluate({Offset(2, arch=ARCH_X32, description="some constant"): {1}}) == True
|
||||||
|
|
||||||
|
|
||||||
def test_invalid_offset():
|
def test_invalid_offset():
|
||||||
with pytest.raises(capa.rules.InvalidRule):
|
with pytest.raises(capa.rules.InvalidRule):
|
||||||
r = capa.rules.Rule.from_yaml(
|
r = capa.rules.Rule.from_yaml(
|
||||||
|
|||||||
Reference in New Issue
Block a user