Skip to content

Commit 2d5f600

Browse files
committed
Simplify atom quality calculation.
1 parent 8d3f825 commit 2d5f600

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

libyara/atoms.c

+3-8
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ int yr_atoms_heuristic_quality(
117117

118118
int quality = 0;
119119
int unique_bytes = 0;
120-
int masked_nibbles = 0;
121120
int i;
122121

123122
assert(atom->length <= YR_MAX_ATOM_LENGTH);
@@ -129,15 +128,13 @@ int yr_atoms_heuristic_quality(
129128
switch (atom->mask[i])
130129
{
131130
case 0x00:
132-
masked_nibbles += 2;
131+
quality -= 6;
133132
break;
134133
case 0x0F:
135-
masked_nibbles += 1;
136-
quality += 4;
134+
quality += 1;
137135
break;
138136
case 0xF0:
139-
masked_nibbles += 1;
140-
quality += 4;
137+
quality += 1;
141138
break;
142139
case 0xFF:
143140
switch (atom->bytes[i])
@@ -180,8 +177,6 @@ int yr_atoms_heuristic_quality(
180177
quality -= 10 * atom->length;
181178
}
182179

183-
quality -= masked_nibbles * 3;
184-
185180
return YR_MAX_ATOM_QUALITY - 20 * YR_MAX_ATOM_LENGTH + quality;
186181
}
187182

tests/test-atoms.c

+1
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ void test_heuristic_quality()
189189
assert_true_expr(q000102 > q000001);
190190
assert_true_expr(q00010203 > q010203);
191191
assert_true_expr(q010203 > q0102);
192+
assert_true_expr(q010203 > q00000000);
192193
assert_true_expr(q0102 > q01);
193194
assert_true_expr(q01X203 > q0102);
194195
assert_true_expr(q01X203 > q0001);

0 commit comments

Comments
 (0)