diff options
Diffstat (limited to 'spec/ruby/security/cve_2018_8780_spec.rb')
-rw-r--r-- | spec/ruby/security/cve_2018_8780_spec.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/ruby/security/cve_2018_8780_spec.rb b/spec/ruby/security/cve_2018_8780_spec.rb new file mode 100644 index 0000000000..44be29bf22 --- /dev/null +++ b/spec/ruby/security/cve_2018_8780_spec.rb @@ -0,0 +1,53 @@ +require_relative '../spec_helper' + +guard -> { + ruby_version_is "2.3.7"..."2.4" or + ruby_version_is "2.4.4"..."2.5" or + ruby_version_is "2.5.1" +} do + describe "CVE-2018-8780 is resisted by" do + before :all do + @root = File.realpath(tmp("")) + end + + it "Dir.glob by raising an exception when there is a NUL byte" do + lambda { + Dir.glob([[@root, File.join(@root, "*")].join("\0")]) + }.should raise_error(ArgumentError, /(path name|string) contains null byte/) + end + + it "Dir.entries by raising an exception when there is a NUL byte" do + lambda { + Dir.entries(@root+"\0") + }.should raise_error(ArgumentError, /(path name|string) contains null byte/) + end + + it "Dir.foreach by raising an exception when there is a NUL byte" do + lambda { + Dir.foreach(@root+"\0").to_a + }.should raise_error(ArgumentError, /(path name|string) contains null byte/) + end + + ruby_version_is "2.5" do + it "Dir.children by raising an exception when there is a NUL byte" do + lambda { + Dir.children(@root+"\0") + }.should raise_error(ArgumentError, /(path name|string) contains null byte/) + end + + it "Dir.each_child by raising an exception when there is a NUL byte" do + lambda { + Dir.each_child(@root+"\0").to_a + }.should raise_error(ArgumentError, /(path name|string) contains null byte/) + end + end + + ruby_version_is "2.4" do + it "Dir.empty? by raising an exception when there is a NUL byte" do + lambda { + Dir.empty?(@root+"\0") + }.should raise_error(ArgumentError, /(path name|string) contains null byte/) + end + end + end +end |