mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-07 20:17:59 +00:00
Fixed crash in config parser when empty value is encountered.
Example: key1 = value1 key2 = In this config the value will be a bad pointer which config object will attempt to free() causing a crash.
This commit is contained in:
parent
3eaf34f4c6
commit
9f861826be
@ -1158,19 +1158,25 @@ static int parse_variable(diskfile_backend *cfg, char **var_name, char **var_val
|
|||||||
while (isspace(value_start[0]))
|
while (isspace(value_start[0]))
|
||||||
value_start++;
|
value_start++;
|
||||||
|
|
||||||
if (value_start[0] == '\0')
|
if (value_start[0] == '\0') {
|
||||||
|
*var_value = NULL;
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_multiline_var(value_start)) {
|
if (is_multiline_var(value_start)) {
|
||||||
error = parse_multiline_variable(cfg, value_start, var_value);
|
error = parse_multiline_variable(cfg, value_start, var_value);
|
||||||
if (error < GIT_SUCCESS)
|
if (error != GIT_SUCCESS)
|
||||||
|
{
|
||||||
|
*var_value = NULL;
|
||||||
free(*var_name);
|
free(*var_name);
|
||||||
|
}
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = strdup(value_start);
|
tmp = strdup(value_start);
|
||||||
if (tmp == NULL) {
|
if (tmp == NULL) {
|
||||||
free(*var_name);
|
free(*var_name);
|
||||||
|
*var_value = NULL;
|
||||||
error = GIT_ENOMEM;
|
error = GIT_ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user