diff options
author | Vicent Martà <tanoku@gmail.com> | 2011-10-27 15:33:53 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2011-10-27 15:33:53 -0700 |
commit | a2366c949d86570192c0badbb904e87a08ee8ac4 (patch) | |
tree | 276ca0ee33b3ebd131d84638b10c0d20511e03c8 /src | |
parent | d533c8885b83115fbf4ca3a899621c263894dec4 (diff) | |
parent | 9f861826be17d1f3d4e34df1f4b2d4bd9aaec3b0 (diff) | |
download | libgit2-a2366c949d86570192c0badbb904e87a08ee8ac4.tar.gz |
Merge pull request #467 from oleganza/oa-config-parse-fix
Fixed crash in config parser when empty value is encountered.
Diffstat (limited to 'src')
-rw-r--r-- | src/config_file.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/config_file.c b/src/config_file.c index a85ae1578..3540aae0a 100644 --- a/src/config_file.c +++ b/src/config_file.c @@ -1158,19 +1158,25 @@ static int parse_variable(diskfile_backend *cfg, char **var_name, char **var_val while (isspace(value_start[0])) value_start++; - if (value_start[0] == '\0') + if (value_start[0] == '\0') { + *var_value = NULL; goto out; + } if (is_multiline_var(value_start)) { error = parse_multiline_variable(cfg, value_start, var_value); - if (error < GIT_SUCCESS) + if (error != GIT_SUCCESS) + { + *var_value = NULL; free(*var_name); + } goto out; } tmp = strdup(value_start); if (tmp == NULL) { free(*var_name); + *var_value = NULL; error = GIT_ENOMEM; goto out; } |