summaryrefslogtreecommitdiffstats
path: root/dirmngr/dns.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2016-12-19 16:37:50 +0100
committerWerner Koch <wk@gnupg.org>2016-12-19 16:39:17 +0100
commitd51499fdc522a696f23c6776c3ab248742f4e06a (patch)
tree7dec24ffe4d7b809c0bb223ff6238c4491cc341d /dirmngr/dns.c
parenttest: Extend TOFU tests to also check the days with signatures. (diff)
downloadgnupg2-d51499fdc522a696f23c6776c3ab248742f4e06a.tar.xz
gnupg2-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 <wk@gnupg.org>
Diffstat (limited to 'dirmngr/dns.c')
-rw-r--r--dirmngr/dns.c5
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);