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)
|