mirror of
https://github.com/mandiant/capa.git
synced 2026-02-04 19:12:01 -08:00
explorer: fix unhandled exception when resolving rule path (#1693)
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
- linter: skip native API check for NtProtectVirtualMemory #1675 @williballenthin
|
||||
|
||||
### capa explorer IDA Pro plugin
|
||||
- fix unhandled exception when resolving rule path #1693 @mike-hunhoff
|
||||
|
||||
### Development
|
||||
|
||||
|
||||
@@ -573,10 +573,11 @@ class CapaExplorerForm(idaapi.PluginForm):
|
||||
|
||||
def ensure_capa_settings_rule_path(self):
|
||||
try:
|
||||
path: Path = Path(settings.user.get(CAPA_SETTINGS_RULE_PATH, ""))
|
||||
path: str = settings.user.get(CAPA_SETTINGS_RULE_PATH, "")
|
||||
|
||||
# resolve rules directory - check self and settings first, then ask user
|
||||
if not path.exists():
|
||||
# pathlib.Path considers "" equivalent to "." so we first check if rule path is an empty string
|
||||
if not path or not Path(path).exists():
|
||||
# configure rules selection messagebox
|
||||
rules_message = QtWidgets.QMessageBox()
|
||||
rules_message.setIcon(QtWidgets.QMessageBox.Information)
|
||||
@@ -594,15 +595,15 @@ class CapaExplorerForm(idaapi.PluginForm):
|
||||
if pressed == QtWidgets.QMessageBox.Cancel:
|
||||
raise UserCancelledError()
|
||||
|
||||
path = Path(self.ask_user_directory())
|
||||
path = self.ask_user_directory()
|
||||
if not path:
|
||||
raise UserCancelledError()
|
||||
|
||||
if not path.exists():
|
||||
if not Path(path).exists():
|
||||
logger.error("rule path %s does not exist or cannot be accessed", path)
|
||||
return False
|
||||
|
||||
settings.user[CAPA_SETTINGS_RULE_PATH] = str(path)
|
||||
settings.user[CAPA_SETTINGS_RULE_PATH] = path
|
||||
except UserCancelledError:
|
||||
capa.ida.helpers.inform_user_ida_ui("Analysis requires capa rules")
|
||||
logger.warning(
|
||||
|
||||
Reference in New Issue
Block a user