[PATCH] Fix uninitialized memory in get_local_heads()
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Apr 20, 2009, 10:20 UTC
- Message-ID
- <alpine.DEB.1.00.0904201219240.6955@intel-tinevez-2-302>
- In-Reply-To
- <1240220930-24679-1-git-send-email-Matthieu.Moy@imag.fr>
In 454e202(move duplicated get_local_heads() to remote.c), a static local variable was moved into a function, but not initialized.
This resulted in a crash when trying to push from an empty repository.
Noticed by Matthieu Moy.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> ---
On Mon, 20 Apr 2009, Matthieu Moy wrote:
> Ideally, "git push" from an empty repository to another empty > one should be a no-op, or perhaps should error out cleanly. > Currently, it just segfaults.
Good catch. This patch goes on top of yours.
/me is running valgrind now.
remote.c | 2 +- t/t5701-clone-local.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/remote.c b/remote.c index a06761a..e4c89b8 100644 --- a/remote.c +++ b/remote.c @@ -1504,7 +1504,7 @@ static int one_local_ref(const char *refname, const unsigned char *sha1, int fla struct ref *get_local_heads(void) { - struct ref *local_refs, **local_tail = &local_refs; + struct ref *local_refs = NULL, **local_tail = &local_refs; for_each_ref(one_local_ref, &local_tail); return local_refs; } diff --git a/t/t5701-clone-local.sh b/t/t5701-clone-local.sh index 7c6ef4c..f26b511 100755 --- a/t/t5701-clone-local.sh +++ b/t/t5701-clone-local.sh @@ -132,7 +132,7 @@ test_expect_success 'clone empty repository' ' test $actual = $expected) ' -test_expect_failure 'clone empty repository, and then push should not segfault.' ' +test_expect_success 'clone empty repository, and then push should not segfault.' ' cd "$D" && rm -fr empty/ empty-clone/ && mkdir empty &&
-- 1.6.2.1.493.g67cf3