From 3d065513eca8f19c78b80aeefc1af689892f25e0 Mon Sep 17 00:00:00 2001 From: Eric Brown Date: Tue, 26 Mar 2024 12:09:40 -0700 Subject: [PATCH] importlib.import_module also needs to handle string types (#389) The importlib.import_module module and function also needs to correctly handle the new format for "true" strings in an argument value. It needs to use value_str instead of value. Signed-off-by: Eric Brown --- precli/parsers/python.py | 4 ++-- .../stdlib/hashlib/examples/hashlib_md5_importlib.py | 10 ++++++++++ .../python/stdlib/hashlib/test_hashlib_weak_hash.py | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 tests/unit/rules/python/stdlib/hashlib/examples/hashlib_md5_importlib.py diff --git a/precli/parsers/python.py b/precli/parsers/python.py index 17b9ba3a..d2f1aa98 100644 --- a/precli/parsers/python.py +++ b/precli/parsers/python.py @@ -306,8 +306,8 @@ def unparse_import_from_statement(self, imports: tuple) -> str: return f"from {package} import {', '.join(modules)}" def importlib_import_module(self, call: Call) -> dict: - name = call.get_argument(position=0, name="name").value - package = call.get_argument(position=1, name="package").value + name = call.get_argument(position=0, name="name").value_str + package = call.get_argument(position=1, name="package").value_str if package is None: return name subpkg = len(name) - len(name.lstrip(".")) - 1 diff --git a/tests/unit/rules/python/stdlib/hashlib/examples/hashlib_md5_importlib.py b/tests/unit/rules/python/stdlib/hashlib/examples/hashlib_md5_importlib.py new file mode 100644 index 00000000..91fa940f --- /dev/null +++ b/tests/unit/rules/python/stdlib/hashlib/examples/hashlib_md5_importlib.py @@ -0,0 +1,10 @@ +# level: ERROR +# start_line: 10 +# end_line: 10 +# start_column: 0 +# end_column: 11 +import importlib + + +hashlib = importlib.import_module("hashlib") +hashlib.md5() diff --git a/tests/unit/rules/python/stdlib/hashlib/test_hashlib_weak_hash.py b/tests/unit/rules/python/stdlib/hashlib/test_hashlib_weak_hash.py index cfa7c5a9..ab18c142 100644 --- a/tests/unit/rules/python/stdlib/hashlib/test_hashlib_weak_hash.py +++ b/tests/unit/rules/python/stdlib/hashlib/test_hashlib_weak_hash.py @@ -43,6 +43,7 @@ def test_rule_meta(self): "hashlib_md4.py", "hashlib_md5.py", "hashlib_md5_as_identifier.py", + "hashlib_md5_importlib.py", "hashlib_md5_usedforsecurity_true.py", "hashlib_new_blake2b.py", "hashlib_new_blake2s.py",