Skip to content

Commit bf6a78c

Browse files
Adding enum now appends iterative suffix to enum names if name already exists, as these must be unique in IDA
1 parent 2da3402 commit bf6a78c

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

hashdb.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
########################################################################################
33
##
4-
## This plugin is the client for the HashDB lookup service operated buy OALABS:
4+
## This plugin is the client for the HashDB lookup service operated by OALABS:
55
##
66
## https://hashdb.openanalysis.net/
77
##
@@ -74,6 +74,9 @@
7474
ENUM_PREFIX = "hashdb_strings"
7575
NETNODE_NAME = "$hashdb"
7676

77+
ENUM_CREATED_SUCCESS = 1
78+
SUFFIX_UPPER_LIMIT = 100
79+
7780
#--------------------------------------------------------------------------
7881
# Setup Icon
7982
#--------------------------------------------------------------------------
@@ -654,11 +657,19 @@ def add_enums(enum_name, hash_list, enum_member_suffix = None, enum_size = 0):
654657
if not ida_enum.set_enum_width(enum_id, enum_size):
655658
return None
656659

657-
for member_name, value in hash_list:
658-
ida_enum.add_enum_member(enum_id, member_name if enum_member_suffix is None else member_name + '_' + enum_member_suffix, value)
660+
for name, value in hash_list:
661+
suffix = 0
662+
final_name = name
663+
while (ida_enum.add_enum_member(enum_id, name, value) != ENUM_CREATED_SUCCESS):
664+
if suffix > SUFFIX_UPPER_LIMIT:
665+
raise HashDBError("Exceeded the upper limit for number of suffixes for enum name " + name)
666+
else:
667+
final_name = name + "_" + str(suffix) #new name becomes: name_0, name_1, name_2 etc...
668+
suffix += 1
659669
return enum_id
660670

661671

672+
662673
def generate_enum_name(prefix: str) -> str:
663674
"""
664675
Generates an enum name from a prefix

0 commit comments

Comments
 (0)