Skip to content

Commit 659400c

Browse files
authored
Merge pull request mandiant#33 from fireeye/fix/potential-inf-loop
Updated log level and fix for potential infinite loop.
2 parents 4978d35 + 3e25207 commit 659400c

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

flare_emu.py

+8
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,15 @@ def iterate(self, target, targetCallback, preEmuCallback=None, callHook=None, in
446446
# read targets from dict to go from higher to lower addresses
447447
# this is done to optimize loop by allowing hook to check for and remove other targets visited en route to
448448
# current target
449+
prev_target_info_len = len(userData["targetInfo"])
449450
while len(userData["targetInfo"]) > 0:
451+
# Fixes potential edge-case for infinite loop where the target VAs are never reached
452+
# and the length never decreases. This modification verifies that the target VAs
453+
# are being deleted; otherwise, breaks out of the while loop.
454+
if cnt > 1 and len(userData["targetInfo"]) == prev_target_info_len:
455+
break
456+
prev_target_info_len = len(userData["targetInfo"])
457+
450458
userData["targetVA"] = targetVA = sorted(
451459
userData["targetInfo"].keys(), reverse=True)[0]
452460
flow, paths = userData["targetInfo"][targetVA]

0 commit comments

Comments
 (0)