From 2433777a76aff6415cb1b1c89a05c86240ea9a29 Mon Sep 17 00:00:00 2001 From: Michael Hunhoff Date: Mon, 1 Feb 2021 11:43:24 -0700 Subject: [PATCH 1/3] fixes #410 --- capa/main.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/capa/main.py b/capa/main.py index 0e60d6c0..97fa5451 100644 --- a/capa/main.py +++ b/capa/main.py @@ -115,7 +115,13 @@ def find_capabilities(ruleset, extractor, disable_progress=None): } } - for f in tqdm.tqdm(list(extractor.get_functions()), disable=disable_progress, desc="matching", unit=" functions"): + pbar = tqdm.tqdm + if disable_progress: + # do not use tqdm to avoid unnecessary side effects when caller intends + # to disable progress completely + pbar = lambda s, *args, **kwargs: s + + for f in pbar(list(extractor.get_functions()), disable=disable_progress, desc="matching", unit=" functions"): function_matches, bb_matches, feature_count = find_function_capabilities(ruleset, extractor, f) meta["feature_counts"]["functions"][f.__int__()] = feature_count logger.debug("analyzed function 0x%x and extracted %d features", f.__int__(), feature_count) @@ -366,7 +372,13 @@ def get_rules(rule_path, disable_progress=False): rules = [] - for rule_path in tqdm.tqdm(list(rule_paths), disable=disable_progress, desc="loading ", unit=" rules"): + pbar = tqdm.tqdm + if disable_progress: + # do not use tqdm to avoid unnecessary side effects when caller intends + # to disable progress completely + pbar = lambda s, *args, **kwargs: s + + for rule_path in pbar(list(rule_paths), disable=disable_progress, desc="loading ", unit=" rules"): try: rule = capa.rules.Rule.from_yaml_file(rule_path) except capa.rules.InvalidRule: From dbc4e0665721cb225a9cb1e37b60331744fa3c7e Mon Sep 17 00:00:00 2001 From: mike-hunhoff Date: Mon, 1 Feb 2021 12:45:29 -0700 Subject: [PATCH 2/3] Update capa/main.py Co-authored-by: Willi Ballenthin --- capa/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capa/main.py b/capa/main.py index 97fa5451..5c5da091 100644 --- a/capa/main.py +++ b/capa/main.py @@ -121,7 +121,7 @@ def find_capabilities(ruleset, extractor, disable_progress=None): # to disable progress completely pbar = lambda s, *args, **kwargs: s - for f in pbar(list(extractor.get_functions()), disable=disable_progress, desc="matching", unit=" functions"): + for f in pbar(list(extractor.get_functions()), desc="matching", unit=" functions"): function_matches, bb_matches, feature_count = find_function_capabilities(ruleset, extractor, f) meta["feature_counts"]["functions"][f.__int__()] = feature_count logger.debug("analyzed function 0x%x and extracted %d features", f.__int__(), feature_count) From 2288f38a1137dac810d296cdfdcd7eee4bd51c45 Mon Sep 17 00:00:00 2001 From: mike-hunhoff Date: Mon, 1 Feb 2021 12:45:36 -0700 Subject: [PATCH 3/3] Update capa/main.py Co-authored-by: Willi Ballenthin --- capa/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capa/main.py b/capa/main.py index 5c5da091..27d5a9c3 100644 --- a/capa/main.py +++ b/capa/main.py @@ -378,7 +378,7 @@ def get_rules(rule_path, disable_progress=False): # to disable progress completely pbar = lambda s, *args, **kwargs: s - for rule_path in pbar(list(rule_paths), disable=disable_progress, desc="loading ", unit=" rules"): + for rule_path in pbar(list(rule_paths), desc="loading ", unit=" rules"): try: rule = capa.rules.Rule.from_yaml_file(rule_path) except capa.rules.InvalidRule: