1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/-ext-/win32/test_fd_setsize.rb
shirosaki 5ccee663e9 * include/ruby/win32.h (FD_SET): change function to macro.
To avoid buffer overflow when smaller FD_SETSISE is used in ext
  libraries.

* win32/win32.c (rb_w32_fdset): this function is not used anymore.
  But we leave this for compatibility.

* win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
  FD_SETSISE is used in ext libraries. Dereference of fd_set pointer
  causes SEGV.

* test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
  above.
* ext/-test-/win32/fd_setsize/depend: ditto.
* ext/-test-/win32/fd_setsize/extconf.rb: ditto.
* ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.

  [ruby-core:44588] [Bug #6352]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-08 12:47:25 +00:00

25 lines
706 B
Ruby

require 'test/unit'
require_relative '../../ruby/envutil'
module Bug
module Win32
class TestFdSetSize < Test::Unit::TestCase
def test_select_with_unmatched_fd_setsize
bug6532 = '[ruby-core:44588]'
assert_in_out_err([], <<-INPUT, %w(:ok), [], bug6532)
require '-test-/win32/fd_setsize'
Bug::Win32.test_select
p :ok
INPUT
end
def test_fdset_with_unmatched_fd_setsize
bug6532 = '[ruby-core:44588]'
assert_in_out_err([], <<-INPUT, %w(:ok), [], bug6532)
require '-test-/win32/fd_setsize'
p :ok if Bug::Win32.test_fdset
INPUT
end
end
end
end if /mswin|mingw/ =~ RUBY_PLATFORM