summaryrefslogtreecommitdiff
blob: 7aa1d16e92cd0b4ff21d2be7e6993435e09b1034 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
--- 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)