From f17629a4eb4d183fbec7d83ca0cf74107b04889a Mon Sep 17 00:00:00 2001 From: Willi Ballenthin Date: Wed, 22 Apr 2026 09:47:14 +0300 Subject: [PATCH] fix: freeze/__init__.py: NO_ADDRESS < NO_ADDRESS returns True Closes #3025 --- CHANGELOG.md | 2 ++ capa/features/freeze/__init__.py | 2 +- tests/test_freeze_static.py | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f6ac984..fd1cd9aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ - fix: base_extractor.py: __metaclass__ is Python 2 syntax, ignored in Py3 @williballenthin #3024 +- fix: freeze/__init__.py: NO_ADDRESS < NO_ADDRESS returns True @williballenthin #3025 + ### capa Explorer Web ### capa Explorer IDA Pro plugin diff --git a/capa/features/freeze/__init__.py b/capa/features/freeze/__init__.py index 57df23b2..5ea45253 100644 --- a/capa/features/freeze/__init__.py +++ b/capa/features/freeze/__init__.py @@ -173,7 +173,7 @@ class Address(HashableModel): return self.type < other.type if self.type is AddressType.NO_ADDRESS: - return True + return False else: assert self.type == other.type diff --git a/tests/test_freeze_static.py b/tests/test_freeze_static.py index 00cb02be..16003fce 100644 --- a/tests/test_freeze_static.py +++ b/tests/test_freeze_static.py @@ -165,6 +165,11 @@ def test_serialize_features(): roundtrip_feature(capa.features.insn.Property("System.IO.FileInfo::Length")) +def test_no_address_lt_irreflexivity(): + no_addr = capa.features.freeze.Address.from_capa(capa.features.address.NO_ADDRESS) + assert not (no_addr < no_addr) + + def test_freeze_sample(tmpdir, z9324d_extractor): # tmpdir fixture handles cleanup o = tmpdir.mkdir("capa").join("test.frz").strpath