diff options
author | Patrick Steinhardt <ps@pks.im> | 2019-07-24 18:04:38 +0200 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2019-07-26 20:27:22 +0200 |
commit | 76182e84531d144aa0edf27012b69cebde2b69f3 (patch) | |
tree | 6d82786ffcc438e00a36a30cbc38c69406fd585e /src/config_entries.h | |
parent | e3adc99e1f9b71ceaddd650eba9c7c644290e4a6 (diff) | |
download | libgit2-76182e84531d144aa0edf27012b69cebde2b69f3.tar.gz |
config_entries: fix possible segfault when duplicating entries
When duplicating a configuration entry, we allocate a new entry but do
not verify that we get a valid pointer back. As we're dereferencing the
pointer afterwards, we might thus run into a segfault in out-of-memory
situations.
Extract a new function `git_config_entries_dup_entry` that handles the
complete entry duplication. Fix the error by using
`GIT_ERROR_CHECK_ALLOC`.
Diffstat (limited to 'src/config_entries.h')
-rw-r--r-- | src/config_entries.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/config_entries.h b/src/config_entries.h index 6fdbc41ba..832379e74 100644 --- a/src/config_entries.h +++ b/src/config_entries.h @@ -14,6 +14,7 @@ typedef struct git_config_entries git_config_entries; int git_config_entries_new(git_config_entries **out); int git_config_entries_dup(git_config_entries **out, git_config_entries *entries); +int git_config_entries_dup_entry(git_config_entries *entries, const git_config_entry *entry); void git_config_entries_incref(git_config_entries *entries); void git_config_entries_free(git_config_entries *entries); /* Add or append the new config option */ |