]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2278. [bug] win32: handle the case where Windows returns no
authorMark Andrews <marka@isc.org>
Fri, 14 Dec 2007 01:40:42 +0000 (01:40 +0000)
committerMark Andrews <marka@isc.org>
Fri, 14 Dec 2007 01:40:42 +0000 (01:40 +0000)
                        searchlist or DNS suffix. [RT #17354]

CHANGES
lib/lwres/win32/lwconfig.c

diff --git a/CHANGES b/CHANGES
index 68e14d78b3a7ba51c080601ab82cb449651b1d7c..8e261d30b401bf13218e7b75609c6ce9751e1a3d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2278.  [bug]           win32: handle the case where Windows returns no
+                       searchlist or DNS suffix. [RT #17354]
+
 2277.  [bug]           Empty zone names were not correctly being caught at
                        in the post parse checks. [RT #17357]
 
index 10e9946a98e64f62a15377c151769ffeda42eaf0..c6fb6331e444a7de11c4f42dac30e2b75f5f35ad 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: lwconfig.c,v 1.6 2007/06/18 23:47:51 tbox Exp $ */
+/* $Id: lwconfig.c,v 1.7 2007/12/14 01:40:42 marka Exp $ */
 
 /*
  * We do this so that we may incorporate everything in the main routines
@@ -51,7 +51,6 @@ get_win32_searchlist(lwres_context_t *ctx) {
        char searchlist[MAX_PATH];
        DWORD searchlen = MAX_PATH;
        char *cp;
-       int idx;
        lwres_conf_t *confdata;
 
        REQUIRE(ctx != NULL);
@@ -69,19 +68,17 @@ get_win32_searchlist(lwres_context_t *ctx) {
                        keyFound = FALSE;
                RegCloseKey(hKey);
        }
-       
-       confdata->searchnxt = 0;
 
-       idx = 0;
+       confdata->searchnxt = 0;
        cp = strtok((char *)searchlist, ", \0");
        while (cp != NULL) {
                if (confdata->searchnxt == LWRES_CONFMAXSEARCH)
                        break;
                if (strlen(cp) <= MAX_PATH && strlen(cp) > 0) {
-                       confdata->search[idx] = lwres_strdup(ctx, cp);
+                       confdata->search[confdata->searchnxt] = lwres_strdup(ctx, cp);
+                       if (confdata->search[confdata->searchnxt] != NULL)
+                               confdata->searchnxt++;
                }
-               idx++;
-               confdata->searchnxt++;
                cp = strtok(NULL, ", \0");
        }
 }
@@ -125,13 +122,14 @@ lwres_conf_parse(lwres_context_t *ctx, const char *filename) {
        get_win32_searchlist(ctx);
 
        /* Use only if there is no search list */
-       if (confdata->searchnxt == 0) {
+       if (confdata->searchnxt == 0 && strlen(FixedInfo->DomainName) > 0) {
                confdata->domainname = lwres_strdup(ctx, FixedInfo->DomainName);
                if (confdata->domainname == NULL) {
                        GlobalFree(FixedInfo);
                        return (LWRES_R_FAILURE);
                }
-       }
+       } else
+               confdata->domainname = NULL;
 
        /* Get the list of nameservers */
        pIPAddr = &FixedInfo->DnsServerList;