[PATCH v3 22/25] remote: plug memory leak in match_explicit()
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- May 2, 2017, 16:02 UTC
- Message-ID
- <359c39c36a234c318b46ff934baa3757fdfc361d.1493740497.git.johannes.schindelin@gmx.de>
- In-Reply-To
- <cover.1493740497.git.johannes.schindelin@gmx.de>
The `guess_ref()` returns an allocated buffer of which `make_linked_ref()` does not take custody (`alloc_ref()` makes a copy), therefore we need to release the buffer afterwards.
Noticed via Coverity.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- remote.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/remote.c b/remote.c index 801137c72eb..72b4591b983 100644 --- a/remote.c +++ b/remote.c @@ -1191,9 +1191,10 @@ static int match_explicit(struct ref *src, struct ref *dst, else if (is_null_oid(&matched_src->new_oid)) error("unable to delete '%s': remote ref does not exist", dst_value); - else if ((dst_guess = guess_ref(dst_value, matched_src))) + else if ((dst_guess = guess_ref(dst_value, matched_src))) { matched_dst = make_linked_ref(dst_guess, dst_tail); - else + free(dst_guess); + } else error("unable to push to unqualified destination: %s\n" "The destination refspec neither matches an " "existing ref on the remote nor\n"
-- 2.12.2.windows.2.800.gede8f145e06