diff options
author | Pauli <paul.dale@oracle.com> | 2019-08-24 16:13:24 +1000 |
---|---|---|
committer | Pauli <paul.dale@oracle.com> | 2019-08-24 16:45:53 +1000 |
commit | 4bdab2571782393e4ba3acb8578c415ce1575a75 (patch) | |
tree | 3eca3b712cfd91c282485e979f3e1f0343522c94 /crypto | |
parent | 738da3d0b8c63994e77d22457f8479c23e08b361 (diff) |
Avoid overflowing FDSET when using select(2).
There is a problem in the rand_unix.c code when the random seed fd is greater
than or equal to FD_SETSIZE and the FDSET overruns its limit and walks the
stack.
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/9686)
(cherry picked from commit e1f8584d47a499301fba781086af6885fcf21fec)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/rand/rand_unix.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c index 0d449d235a..258fef7eb0 100644 --- a/crypto/rand/rand_unix.c +++ b/crypto/rand/rand_unix.c @@ -411,7 +411,7 @@ static int wait_random_seeded(void) } /* Open /dev/random and wait for it to be readable */ if ((fd = open(DEVRANDOM_WAIT, O_RDONLY)) != -1) { - if (DEVRANDM_WAIT_USE_SELECT) { + if (DEVRANDM_WAIT_USE_SELECT && fd < FD_SETSIZE) { FD_ZERO(&fds); FD_SET(fd, &fds); while ((r = select(fd + 1, &fds, NULL, NULL, NULL)) < 0 |