# File lib/brakeman/checks/check_execute.rb, line 137 def dangerous? exp exp.each_sexp do |e| if call? e and e.method == :to_s e = e.target end next if node_type? e, :lit, :str next if SAFE_VALUES.include? e next if shell_escape? e if node_type? e, :if # If we're in a conditional, evaluate the `then` and `else` clauses to # see if they're dangerous. if res = dangerous?(e.values[1..-1]) return res end elsif node_type? e, :or, :evstr, :dstr if res = dangerous?(e) return res end else return e end end false end