summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--parsing.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/parsing.c b/parsing.c
index 8e15e5a..36b0f0c 100644
--- a/parsing.c
+++ b/parsing.c
@@ -57,39 +57,41 @@ int read_config_line(FILE *f, char *line, const char **value, int bufsize)
}
isname = 1;
i++;
}
line[i+1] = 0;
return i;
}
int cgit_read_config(const char *filename, configfn fn)
{
static int nesting;
int len;
char line[256];
const char *value;
FILE *f;
- /* cancel the reading of yet another configfile after 16 invocations */
- if (nesting++ > 16)
+ /* cancel deeply nested include-commands */
+ if (nesting > 8)
return -1;
if (!(f = fopen(filename, "r")))
return -1;
+ nesting++;
while((len = read_config_line(f, line, &value, sizeof(line))) > 0)
(*fn)(line, value);
+ nesting--;
fclose(f);
return 0;
}
char *convert_query_hexchar(char *txt)
{
int d1, d2;
if (strlen(txt) < 3) {
*txt = '\0';
return txt-1;
}
d1 = hextoint(*(txt+1));
d2 = hextoint(*(txt+2));
if (d1<0 || d2<0) {
strcpy(txt, txt+3);
return txt-1;