[pacman-dev] [PATCH] Moved the check for max depth
jjacky
i.am.jack.mail at gmail.com
Tue Jan 10 09:10:30 EST 2012
Moved the check for max depth when processing an Include
directive, to avoid doing the glob process for nothing.
Added file & line number in max depth error message.
Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>
---
src/pacman/conf.c | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index 09749ea..2ff16d2 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -700,13 +700,6 @@ static int _parseconfig(const char *file, struct
section_t *section,
int ret = 0;
const int max_depth = 10;
- if(depth >= max_depth) {
- pm_printf(ALPM_LOG_ERROR,
- _("config parsing exceeded max recursion depth of %d.\n"), max_depth);
- ret = 1;
- goto cleanup;
- }
-
pm_printf(ALPM_LOG_DEBUG, "config: attempting to read file %s\n", file);
fp = fopen(file, "r");
if(fp == NULL) {
@@ -794,6 +787,16 @@ static int _parseconfig(const char *file, struct
section_t *section,
ret = 1;
goto cleanup;
}
+
+ /* if we've reached max depth, we're done */
+ if(depth + 1 >= max_depth) {
+ pm_printf(ALPM_LOG_ERROR,
+ _("config file %s, line %d: parsing exceeded max recursion depth
of %d.\n"),
+ file, linenum, max_depth);
+ ret = 1;
+ goto cleanup;
+ }
+
/* Ignore include failures... assume non-critical */
globret = glob(value, GLOB_NOCHECK, NULL, &globbuf);
switch(globret) {
--
1.7.8.3
More information about the pacman-dev
mailing list