diff options
author | Werner Koch <[email protected]> | 2016-12-19 15:37:50 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-12-19 15:39:17 +0000 |
commit | d51499fdc522a696f23c6776c3ab248742f4e06a (patch) | |
tree | 7dec24ffe4d7b809c0bb223ff6238c4491cc341d | |
parent | test: Extend TOFU tests to also check the days with signatures. (diff) | |
download | gnupg-d51499fdc522a696f23c6776c3ab248742f4e06a.tar.gz gnupg-d51499fdc522a696f23c6776c3ab248742f4e06a.zip |
dirmngr,w32: Hack around a select problem.
* dirmngr/dns.c (FD_SETSIZE): Bump up to 1024.
(dns_poll): Return an error instead of hitting an assertion failure.
--
For unknown reasons socket() return fd with values 244, 252, 268. The
latter is above the FD_SETSIZE of 256. It seems that select has been
build with a highler FD_SETSIZE limit. Bump up to a reasonable large
value.
A better solution would be to grab some code from npth_eselect to
replace select. We could also use npth_eselect direclty in
dns-stuff.c instead of using dns_res_poll.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | dirmngr/dns.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/dirmngr/dns.c b/dirmngr/dns.c index de7fa728f..4b61b72c2 100644 --- a/dirmngr/dns.c +++ b/dirmngr/dns.c @@ -50,7 +50,7 @@ #if _WIN32 #ifndef FD_SETSIZE -#define FD_SETSIZE 256 +#define FD_SETSIZE 1024 #endif #include <winsock2.h> #include <ws2tcpip.h> @@ -1107,7 +1107,8 @@ static int dns_poll(int fd, short events, int timeout) { if (!events) return 0; - assert(fd >= 0 && (unsigned)fd < FD_SETSIZE); + if (fd < 0 || (unsigned)fd >= FD_SETSIZE) + return EINVAL; FD_ZERO(&rset); FD_ZERO(&wset); |