diff options
author | Jan Pokorný <jpokorny@redhat.com> | 2014-08-29 21:31:28 +0200 |
---|---|---|
committer | Jan Pokorný <jpokorny@redhat.com> | 2014-08-29 23:39:12 +0200 |
commit | 607ed644a8de5af41370a4fb36ea6d0c38f8c96a (patch) | |
tree | 30bb46f321d62a206157d03f431cb1e21768af36 /command_manager.py | |
parent | c5cf21e80245288c8af16229743470106bffb99b (diff) | |
download | clufter-607ed644a8de5af41370a4fb36ea6d0c38f8c96a.tar.gz clufter-607ed644a8de5af41370a4fb36ea6d0c38f8c96a.tar.xz clufter-607ed644a8de5af41370a4fb36ea6d0c38f8c96a.zip |
command_manager: add (dummy) infloop guards for recursive aliases
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'command_manager.py')
-rw-r--r-- | command_manager.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/command_manager.py b/command_manager.py index 253c4ef..ed88ea3 100644 --- a/command_manager.py +++ b/command_manager.py @@ -83,7 +83,10 @@ class CommandManager(PluginManager): commands.pop(cmd_name) inverse_commands = dict((b, a) for a, b in commands.iteritems()) - for cmd_name in aliases: + for i, cmd_name in enumerate(aliases): + if i >= 100: + log.warn("Signs of infinite loop observed, escaping loop") + break try: alias_singleton = commands[cmd_name] except KeyError: @@ -94,6 +97,7 @@ class CommandManager(PluginManager): if issubclass(resolved, (Command, CommandAlias)): commands[cmd_name] = resolved if issubclass(resolved, CommandAlias): + assert resolved is not alias_singleton, "triv. infloop" # alias to alias recursion -> just repeat the cycle aliases.append(resolved) continue |