From fac4b5c4602494f1d120d4faa05f8a49ec85bc47 Mon Sep 17 00:00:00 2001
From: Simone Margaritelli <evilsocket@gmail.com>
Date: Wed, 9 Oct 2019 12:01:44 +0200
Subject: [PATCH] fix: don't allow plugins to make the main process crash

---
 pwnagotchi/plugins/__init__.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/pwnagotchi/plugins/__init__.py b/pwnagotchi/plugins/__init__.py
index 38d29e7..6dd7b64 100644
--- a/pwnagotchi/plugins/__init__.py
+++ b/pwnagotchi/plugins/__init__.py
@@ -1,6 +1,7 @@
 import os
 import glob
 import importlib, importlib.util
+import logging
 
 default_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "default")
 loaded = {}
@@ -13,10 +14,13 @@ def dummy_callback():
 def on(event_name, *args, **kwargs):
     global loaded
     cb_name = 'on_%s' % event_name
-    for _, plugin in loaded.items():
+    for plugin_name, plugin in loaded.items():
         if cb_name in plugin.__dict__:
             # print("calling %s %s(%s)" %(cb_name, args, kwargs))
-            plugin.__dict__[cb_name](*args, **kwargs)
+            try:
+                plugin.__dict__[cb_name](*args, **kwargs)
+            except Exception as e:
+                logging.error("error while running %s.%s : %s" % (plugin_name, cb_name, e))
 
 
 def load_from_file(filename):