summaryrefslogtreecommitdiffabout
path: root/parsing.c
Unidiff
Diffstat (limited to 'parsing.c') (more/less context) (ignore whitespace changes)
-rw-r--r--parsing.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/parsing.c b/parsing.c
index 8e15e5a..36b0f0c 100644
--- a/parsing.c
+++ b/parsing.c
@@ -70,13 +70,15 @@ int cgit_read_config(const char *filename, configfn fn)
70 const char *value; 70 const char *value;
71 FILE *f; 71 FILE *f;
72 72
73 /* cancel the reading of yet another configfile after 16 invocations */ 73 /* cancel deeply nested include-commands */
74 if (nesting++ > 16) 74 if (nesting > 8)
75 return -1; 75 return -1;
76 if (!(f = fopen(filename, "r"))) 76 if (!(f = fopen(filename, "r")))
77 return -1; 77 return -1;
78 nesting++;
78 while((len = read_config_line(f, line, &value, sizeof(line))) > 0) 79 while((len = read_config_line(f, line, &value, sizeof(line))) > 0)
79 (*fn)(line, value); 80 (*fn)(line, value);
81 nesting--;
80 fclose(f); 82 fclose(f);
81 return 0; 83 return 0;
82} 84}
@@ -108,7 +110,7 @@ int cgit_parse_query(char *txt, configfn fn)
108 return 0; 110 return 0;
109 111
110 t = txt = xstrdup(txt); 112 t = txt = xstrdup(txt);
111 113
112 while((c=*t) != '\0') { 114 while((c=*t) != '\0') {
113 if (c=='=') { 115 if (c=='=') {
114 *t = '\0'; 116 *t = '\0';
@@ -213,7 +215,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag)
213 free(data); 215 free(data);
214 return 0; 216 return 0;
215 } 217 }
216 218
217 ret = xmalloc(sizeof(*ret)); 219 ret = xmalloc(sizeof(*ret));
218 ret->tagger = NULL; 220 ret->tagger = NULL;
219 ret->tagger_email = NULL; 221 ret->tagger_email = NULL;