mirror of
https://github.com/github/codeql.git
synced 2025-12-18 01:33:15 +01:00
135 lines
2.4 KiB
Ruby
135 lines
2.4 KiB
Ruby
require 'pathname'
|
|
|
|
def m_new
|
|
pn = Pathname.new(source 'a')
|
|
sink pn # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_plus
|
|
a = Pathname.new(source 'a')
|
|
b = Pathname.new(source 'b')
|
|
sink(a + b) # $ hasTaintFlow=a $ hasTaintFlow=b
|
|
end
|
|
|
|
def m_dirname
|
|
pn = Pathname.new(source 'a')
|
|
sink pn.dirname # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_each_filename
|
|
a = Pathname.new(source 'a')
|
|
a.each_filename do |x|
|
|
sink x # $ hasTaintFlow=a
|
|
end
|
|
end
|
|
|
|
def m_expand_path
|
|
a = Pathname.new(source 'a')
|
|
sink a.expand_path() # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_join
|
|
a = Pathname.new(source 'a')
|
|
b = Pathname.new('foo')
|
|
c = Pathname.new(source 'c')
|
|
sink a.join(b, c) # $ hasTaintFlow=a $ hasTaintFlow=c
|
|
end
|
|
|
|
def m_parent
|
|
a = Pathname.new(source 'a')
|
|
sink a.parent() # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_realpath
|
|
a = Pathname.new(source 'a')
|
|
sink a.realpath() # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_relative_path_from
|
|
a = Pathname.new(source 'a')
|
|
sink a.relative_path_from('/foo/bar') # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_to_path
|
|
a = Pathname.new(source 'a')
|
|
sink a.to_path # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_to_s
|
|
a = Pathname.new(source 'a')
|
|
sink a.to_s # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_plus
|
|
a = Pathname.new(source 'a')
|
|
b = a + 'foo'
|
|
sink b # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_slash
|
|
a = Pathname.new(source 'a')
|
|
b = a / 'foo'
|
|
sink b # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_basename
|
|
a = Pathname.new(source 'a')
|
|
b = a.basename
|
|
sink b # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_cleanpath
|
|
a = Pathname.new(source 'a')
|
|
b = a.cleanpath
|
|
sink b # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_sub
|
|
a = Pathname.new(source 'a')
|
|
b = a.sub('foo', 'bar')
|
|
sink b # $ hasTaintFlow=a
|
|
end
|
|
|
|
def m_sub_ext
|
|
a = Pathname.new(source 'a')
|
|
b = a.sub_ext('.txt')
|
|
sink b # $ hasTaintFlow=a
|
|
end
|
|
|
|
# Test flow through intermediate pathnames
|
|
def intermediate_pathnames
|
|
a = Pathname.new(source 'a')
|
|
|
|
b = a + 'foo'
|
|
sink b.realpath # $ hasTaintFlow=a
|
|
|
|
c = a / 'foo'
|
|
sink c.realpath # $ hasTaintFlow=a
|
|
|
|
d = a.basename
|
|
sink d.realpath # $ hasTaintFlow=a
|
|
|
|
e = a.cleanpath
|
|
sink e.realpath # $ hasTaintFlow=a
|
|
|
|
f = a.expand_path
|
|
sink f.realpath # $ hasTaintFlow=a
|
|
|
|
g = a.join('foo')
|
|
sink g.realpath # $ hasTaintFlow=a
|
|
|
|
h = a.realpath
|
|
sink h.realpath # $ hasTaintFlow=a
|
|
|
|
i = a.relative_path_from('/foo/bar')
|
|
sink i.realpath # $ hasTaintFlow=a
|
|
|
|
j = a.sub('foo', 'bar')
|
|
sink j.realpath # $ hasTaintFlow=a
|
|
|
|
k = a.sub_ext('.txt')
|
|
sink k.realpath # $ hasTaintFlow=a
|
|
|
|
l = a.to_path
|
|
sink l.realpath # $ hasTaintFlow=a
|
|
end |