diff --git a/lib/brakeman/processors/alias_processor.rb b/lib/brakeman/processors/alias_processor.rb index 4fd5fcfcf0dc41e3b170009896fd5ea4c7f13139..589c77e9fab1262525e75f492797f245ecd9c720 100644 --- a/lib/brakeman/processors/alias_processor.rb +++ b/lib/brakeman/processors/alias_processor.rb @@ -89,7 +89,7 @@ class Brakeman::AliasProcessor < SexpProcessor end #Generic replace - if replacement = env[exp] + if replacement = env[exp] and not sexp_includes?(replacement, exp) set_line replacement.deep_clone, exp.line else exp @@ -513,4 +513,20 @@ class Brakeman::AliasProcessor < SexpProcessor exp end end + + def sexp_includes? exp, search_term + search_queue = [exp] + + until search_queue.empty? + node = search_queue.shift + + if node == search_term + return true + elsif sexp? node + search_queue.concat node + end + end + + false + end end