From 447d43c57d26a84b5f943a56275870b0b55e3ced Mon Sep 17 00:00:00 2001 From: lhchavez Date: Thu, 26 Mar 2020 17:50:12 -0700 Subject: [PATCH] Fix SIGSEGV on double free for Cred object This change removes the Go finalizer when passing ownership to libgit2. Fixes: #553 (cherry picked from commit 0843b826d219b16d55d3bb7fffbb5fb3fbbf82f8) --- remote.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/remote.go b/remote.go index 6765e45..59a6014 100644 --- a/remote.go +++ b/remote.go @@ -248,6 +248,10 @@ func credentialsCallback(_cred **C.git_cred, _url *C.char, _username_from_url *C ret, cred := callbacks.CredentialsCallback(url, username_from_url, (CredType)(allowed_types)) if cred != nil { *_cred = cred.ptr + + // have transferred ownership to libgit, 'forget' the native pointer + cred.ptr = nil + runtime.SetFinalizer(cred, nil) } return int(ret) }