--- lib/lwres/lwconfig.c.old 2007-06-20 01:47:22.000000000 +0200 +++ lib/lwres/lwconfig.c 2008-06-15 02:57:02.000000000 +0200 @@ -175,13 +175,8 @@ REQUIRE(buffer != NULL); REQUIRE(size > 0U); - *p = '\0'; - ch = eatwhite(fp); - if (ch == EOF) - return (EOF); - do { *p = '\0'; @@ -592,23 +587,37 @@ if (strlen(word) == 0U) rval = LWRES_R_SUCCESS; else if (strcmp(word, "nameserver") == 0) - rval = lwres_conf_parsenameserver(ctx, fp); + rval = (stopchar != '\n')? /* fail instantly if EOL is reached */ + lwres_conf_parsenameserver(ctx, fp) + : LWRES_R_FAILURE; else if (strcmp(word, "lwserver") == 0) - rval = lwres_conf_parselwserver(ctx, fp); + rval = (stopchar != '\n')? + lwres_conf_parselwserver(ctx, fp) + : LWRES_R_FAILURE; else if (strcmp(word, "domain") == 0) - rval = lwres_conf_parsedomain(ctx, fp); + rval = (stopchar != '\n')? + lwres_conf_parsedomain(ctx, fp) + : LWRES_R_FAILURE; else if (strcmp(word, "search") == 0) - rval = lwres_conf_parsesearch(ctx, fp); + rval = (stopchar != '\n')? + lwres_conf_parsesearch(ctx, fp) + : LWRES_R_FAILURE; else if (strcmp(word, "sortlist") == 0) - rval = lwres_conf_parsesortlist(ctx, fp); + rval = (stopchar != '\n')? + lwres_conf_parsesortlist(ctx, fp) + : LWRES_R_FAILURE; else if (strcmp(word, "options") == 0) - rval = lwres_conf_parseoption(ctx, fp); + rval = (stopchar != '\n')? + lwres_conf_parseoption(ctx, fp) + : LWRES_R_FAILURE; else { /* unrecognised word. Ignore entire line */ rval = LWRES_R_SUCCESS; - stopchar = eatline(fp); - if (stopchar == EOF) { - break; + if (stopchar != '\n') { /* do not eat the next line */ + stopchar = eatline(fp); + if (stopchar == EOF) { + break; + } } } if (ret == LWRES_R_SUCCESS && rval != LWRES_R_SUCCESS)