diff options
author | szabii <szabii@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-10 23:40:20 +0000 |
---|---|---|
committer | szabii <szabii@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-10 23:40:20 +0000 |
commit | d646cfabf3a815bcb4a675f6f232e736adc2c3f9 (patch) | |
tree | c525c29ae2e6eeb93163178a73f952ea58e8da1e /cfgparser.c | |
parent | d4239d7b1e2cf6d8880ab43b53a25012a8261012 (diff) | |
download | mpv-d646cfabf3a815bcb4a675f6f232e736adc2c3f9.tar.bz2 mpv-d646cfabf3a815bcb4a675f6f232e736adc2c3f9.tar.xz |
bugfix
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1091 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'cfgparser.c')
-rw-r--r-- | cfgparser.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/cfgparser.c b/cfgparser.c index e47f886901..b16c44e67a 100644 --- a/cfgparser.c +++ b/cfgparser.c @@ -241,6 +241,7 @@ int parse_config_file(struct config *conf, char *conffile) int opt_pos; /* opt pos */ int param_pos; /* param pos */ int ret = 1; + int errors = 0; #ifdef DEBUG assert(conffile != NULL); @@ -276,6 +277,12 @@ int parse_config_file(struct config *conf, char *conffile) printf("\n"); while (fgets(line, MAX_LINE_LEN, fp)) { +nextline: + if (errors >= 16) { + printf("too many errors\n"); + goto out; + } + line_num++; line_pos = 0; @@ -296,14 +303,16 @@ int parse_config_file(struct config *conf, char *conffile) if (opt_pos >= MAX_OPT_LEN) { PRINT_LINENUM; printf("too long option\n"); + errors++; ret = -1; - continue; + goto nextline; } } if (opt_pos == 0) { PRINT_LINENUM; printf("parse error\n"); ret = -1; + errors++; continue; } opt[opt_pos] = '\0'; @@ -321,6 +330,7 @@ int parse_config_file(struct config *conf, char *conffile) PRINT_LINENUM; printf("option without parameter\n"); ret = -1; + errors++; continue; } @@ -338,7 +348,8 @@ int parse_config_file(struct config *conf, char *conffile) PRINT_LINENUM; printf("too long parameter\n"); ret = -1; - continue; + errors++; + goto nextline; } } line_pos++; /* skip the closing " or ' */ @@ -350,7 +361,8 @@ int parse_config_file(struct config *conf, char *conffile) PRINT_LINENUM; printf("too long parameter\n"); ret = -1; - continue; + errors++; + goto nextline; } } } @@ -361,6 +373,7 @@ int parse_config_file(struct config *conf, char *conffile) PRINT_LINENUM; printf("option without parameter\n"); ret = -1; + errors++; continue; } #ifdef DEBUG @@ -388,6 +401,7 @@ int parse_config_file(struct config *conf, char *conffile) PRINT_LINENUM; printf("%s\n", opt); ret = -1; + errors++; continue; /* break */ } |