summaryrefslogtreecommitdiff
path: root/src/config_entries.h
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2019-07-24 18:04:38 +0200
committerPatrick Steinhardt <ps@pks.im>2019-07-26 20:27:22 +0200
commit76182e84531d144aa0edf27012b69cebde2b69f3 (patch)
tree6d82786ffcc438e00a36a30cbc38c69406fd585e /src/config_entries.h
parente3adc99e1f9b71ceaddd650eba9c7c644290e4a6 (diff)
downloadlibgit2-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.h1
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 */