diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-04-10 15:36:33 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-04-14 14:51:22 +0900 |
| commit | 7add524041df0f2482e587ec1a3920c6f34624a4 (patch) | |
| tree | bbc4d579a6a22aa2c6653b211c88343c6ddb97d0 | |
| parent | 72928f201c342fcf6c80b06c47c138b47eba603c (diff) | |
| download | mruby-7add524041df0f2482e587ec1a3920c6f34624a4.tar.gz mruby-7add524041df0f2482e587ec1a3920c6f34624a4.zip | |
Selecting fd should be less than `FD_SETSIZE`; close #4966
| -rw-r--r-- | mrbgems/mruby-io/src/io.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index 8b0dcb244..50265ba25 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -1155,6 +1155,7 @@ mrb_io_s_select(mrb_state *mrb, mrb_value klass) for (i = 0; i < RARRAY_LEN(read); i++) { read_io = RARRAY_PTR(read)[i]; fptr = io_get_open_fptr(mrb, read_io); + if (fptr->fd >= FD_SETSIZE) continue; FD_SET(fptr->fd, rp); if (mrb_io_read_data_pending(mrb, read_io)) { pending++; @@ -1177,6 +1178,7 @@ mrb_io_s_select(mrb_state *mrb, mrb_value klass) FD_ZERO(wp); for (i = 0; i < RARRAY_LEN(write); i++) { fptr = io_get_open_fptr(mrb, RARRAY_PTR(write)[i]); + if (fptr->fd >= FD_SETSIZE) continue; FD_SET(fptr->fd, wp); if (max < fptr->fd) max = fptr->fd; @@ -1196,6 +1198,7 @@ mrb_io_s_select(mrb_state *mrb, mrb_value klass) FD_ZERO(ep); for (i = 0; i < RARRAY_LEN(except); i++) { fptr = io_get_open_fptr(mrb, RARRAY_PTR(except)[i]); + if (fptr->fd >= FD_SETSIZE) continue; FD_SET(fptr->fd, ep); if (max < fptr->fd) max = fptr->fd; |
