diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-08-01 12:41:11 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-08-01 08:47:38 -0700 |
| commit | 9642479a2b62f7a3f3bf6086c02157c745bb5d74 (patch) | |
| tree | b71cb77986a281c689b60ed51c397b9d11dce212 /convert.c | |
| parent | 1f0899978109d732abe5b4825b5cfa40ef1d5885 (diff) | |
| download | git-9642479a2b62f7a3f3bf6086c02157c745bb5d74.tar.xz | |
convert: fix leaking config strings
In `read_convert_config()`, we end up reading some string values into
variables. We don't free any potentially-existing old values though,
which will result in a memory leak in case the same key has been defined
multiple times.
Fix those leaks.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'convert.c')
| -rw-r--r-- | convert.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -1050,14 +1050,20 @@ static int read_convert_config(const char *var, const char *value, * The command-line will not be interpolated in any way. */ - if (!strcmp("smudge", key)) + if (!strcmp("smudge", key)) { + FREE_AND_NULL(drv->smudge); return git_config_string(&drv->smudge, var, value); + } - if (!strcmp("clean", key)) + if (!strcmp("clean", key)) { + FREE_AND_NULL(drv->clean); return git_config_string(&drv->clean, var, value); + } - if (!strcmp("process", key)) + if (!strcmp("process", key)) { + FREE_AND_NULL(drv->process); return git_config_string(&drv->process, var, value); + } if (!strcmp("required", key)) { drv->required = git_config_bool(var, value); |
