fix: _NoAddress.__eq__ unconditionally returns True

Closes #3014
This commit is contained in:
Willi Ballenthin
2026-04-22 09:10:31 +03:00
committed by Willi Ballenthin
parent a07d314a31
commit 0345a15744
3 changed files with 28 additions and 2 deletions
+24
View File
@@ -22,6 +22,30 @@ ADDR3 = capa.features.address.AbsoluteVirtualAddress(0x401003)
ADDR4 = capa.features.address.AbsoluteVirtualAddress(0x401004)
def test_no_address_equality():
no_addr = capa.features.address.NO_ADDRESS
addr_zero = capa.features.address.AbsoluteVirtualAddress(0)
assert no_addr == no_addr
assert no_addr != addr_zero
assert addr_zero != no_addr
assert no_addr != ADDR1
def test_no_address_hash():
no_addr = capa.features.address.NO_ADDRESS
addr_zero = capa.features.address.AbsoluteVirtualAddress(0)
assert hash(no_addr) != hash(addr_zero)
s = {no_addr, addr_zero}
assert len(s) == 2
d = {no_addr: "no", addr_zero: "zero"}
assert d[no_addr] == "no"
assert d[addr_zero] == "zero"
def test_number():
assert bool(Number(1).evaluate({Number(0): {ADDR1}})) is False
assert bool(Number(1).evaluate({Number(1): {ADDR1}})) is True