From 77d0b4aec965adbd9730a3503c2fa38ccade62bc Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Sat, 20 Mar 2021 21:14:43 +0100 Subject: [PATCH] Check plugin permissions before calling onCreate Otherwise if we call something in onCreate for which we don't (yet) have permission we get a permission violation --- src/org/kde/kdeconnect/Device.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/org/kde/kdeconnect/Device.java b/src/org/kde/kdeconnect/Device.java index 8b80955b..4fcef6c4 100644 --- a/src/org/kde/kdeconnect/Device.java +++ b/src/org/kde/kdeconnect/Device.java @@ -754,25 +754,16 @@ public class Device implements BaseLink.PacketReceiver { return false; } - boolean success; - try { - success = plugin.onCreate(); - } catch (Exception e) { - success = false; - Log.e("KDE/addPlugin", "plugin failed to load " + pluginKey, e); - } - plugins.put(pluginKey, plugin); if (!plugin.checkRequiredPermissions()) { Log.e("KDE/addPlugin", "No permission " + pluginKey); plugins.remove(pluginKey); pluginsWithoutPermissions.put(pluginKey, plugin); - success = false; + return false; } else { Log.i("KDE/addPlugin", "Permissions OK " + pluginKey); pluginsWithoutPermissions.remove(pluginKey); - if (plugin.checkOptionalPermissions()) { Log.i("KDE/addPlugin", "Optional Permissions OK " + pluginKey); pluginsWithoutOptionalPermissions.remove(pluginKey); @@ -782,7 +773,12 @@ public class Device implements BaseLink.PacketReceiver { } } - return success; + try { + return plugin.onCreate(); + } catch (Exception e) { + Log.e("KDE/addPlugin", "plugin failed to load " + pluginKey, e); + return false; + } } private synchronized boolean removePlugin(String pluginKey) {