From 3f853f22c87f0b671c0366eb290919719fa56c0e Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Sat, 1 Jul 2017 00:53:05 +0200 Subject: resolv: Lift domain search list limits [BZ #19569] [BZ #21475] This change uses the extended resolver state in struct resolv_conf to store the search list. If applications have not patched the _res object directly, this extended search list will be used by the stub resolver during name resolution. --- resolv/res_query.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'resolv/res_query.c') diff --git a/resolv/res_query.c b/resolv/res_query.c index 33249e3..ebbe5a6 100644 --- a/resolv/res_query.c +++ b/resolv/res_query.c @@ -326,7 +326,7 @@ __res_context_search (struct resolv_context *ctx, int *nanswerp2, int *resplen2, int *answerp2_malloced) { struct __res_state *statp = ctx->resp; - const char *cp, * const *domain; + const char *cp; HEADER *hp = (HEADER *) answer; char tmp[NS_MAXDNAME]; u_int dots; @@ -392,10 +392,11 @@ __res_context_search (struct resolv_context *ctx, (dots && !trailing_dot && (statp->options & RES_DNSRCH) != 0)) { int done = 0; - for (domain = (const char * const *)statp->dnsrch; - *domain && !done; - domain++) { - const char *dname = domain[0]; + for (size_t domain_index = 0; !done; ++domain_index) { + const char *dname = __resolv_context_search_list + (ctx, domain_index); + if (dname == NULL) + break; searched = 1; /* __res_context_querydoman concatenates name -- cgit v1.1