GitHub

Original file line numberDiff line numberDiff line change

@@ -519,6 +519,10 @@ void

519519

mrb_hal_io_fdset_set(mrb_state *mrb, int fd, mrb_io_fdset *fdset)

520520

{

521521

(void)mrb;

522+

if (fd >= FD_SETSIZE) {

523+

mrb_raise(mrb, E_ARGUMENT_ERROR, "fd is larger than FD_SETSIZE");

524+

return;

525+

}

522526

if (fdset) {

523527

FD_SET(fd, &fdset->fds);

524528

}

@@ -528,6 +532,10 @@ int

528532

mrb_hal_io_fdset_isset(mrb_state *mrb, int fd, mrb_io_fdset *fdset)

529533

{

530534

(void)mrb;

535+

if (fd >= FD_SETSIZE) {

536+

mrb_raise(mrb, E_ARGUMENT_ERROR, "fd is larger than FD_SETSIZE");

537+

return 0;

538+

}

531539

if (fdset) {

532540

return FD_ISSET(fd, &fdset->fds);

533541

}

Read the original on github.com ↗