Detect more errors when saving configuration files

This commit is contained in:
Pierre Pronchery 2015-10-08 19:01:11 +02:00
parent cf0428111a
commit 32a3de7d5b

View File

@ -220,6 +220,7 @@ int config_load(Config * config, char const * filename)
FILE * fp; FILE * fp;
String * section = NULL; String * section = NULL;
String * variable = NULL; String * variable = NULL;
String * value = NULL;
int c; int c;
String * str; String * str;
@ -245,14 +246,16 @@ int config_load(Config * config, char const * filename)
variable = str; variable = str;
if((str = _load_value(fp)) == NULL) if((str = _load_value(fp)) == NULL)
break; break;
/* XXX optimize string alloc/free, and may fail */ string_delete(value);
config_set(config, section, variable, str); value = str;
string_delete(str); if(config_set(config, section, variable, value) != 0)
break;
} }
else if(c != '\n') else if(c != '\n')
break; break;
string_delete(section); string_delete(section);
string_delete(variable); string_delete(variable);
string_delete(value);
if(!feof(fp)) if(!feof(fp))
ret = error_set_code(1, "%s: %s%zd", filename, "Syntax error" ret = error_set_code(1, "%s: %s%zd", filename, "Syntax error"
" at line ", line); " at line ", line);