mirror of
https://github.com/github/codeql.git
synced 2025-12-20 10:46:30 +01:00
39 lines
707 B
Ruby
39 lines
707 B
Ruby
def sink s
|
|
puts s
|
|
end
|
|
|
|
sink "taint"
|
|
|
|
def yielder x
|
|
yield x
|
|
end
|
|
|
|
yielder "no taint" { |x| sink x } # no flow
|
|
|
|
yielder "taint" { |x| puts x } # no flow
|
|
|
|
yielder "taint" { |x| sink x } # flow
|
|
|
|
def apply_lambda (lambda, x)
|
|
lambda.call(x)
|
|
end
|
|
|
|
my_lambda = -> (x) { sink x }
|
|
apply_lambda(my_lambda, "no taint") # no flow
|
|
|
|
my_lambda = -> (x) { puts x }
|
|
apply_lambda(my_lambda, "taint") # no flow
|
|
|
|
my_lambda = -> (x) { sink x }
|
|
apply_lambda(my_lambda, "taint") # flow
|
|
|
|
my_lambda = lambda { |x| sink x }
|
|
apply_lambda(my_lambda, "no taint") # no flow
|
|
|
|
my_lambda = lambda { |x| puts x }
|
|
apply_lambda(my_lambda, "taint") # no flow
|
|
|
|
my_lambda = lambda { |x| sink x }
|
|
apply_lambda(my_lambda, "taint") # flow
|
|
|