# [PATCH] branch -v: Prevent garbage output on remote refs

3 messages from 2008-07-06 to 2008-07-06. Participants: Brian Gernhardt, Junio C Hamano.
Thread: https://gitlist.dev/t/14309

## Brian Gernhardt, 2008-07-06 09:24

Subject: [PATCH] branch -v: Prevent garbage output on remote refs
Message-ID: <1215336279-99480-1-git-send-email-benji@silverinsanity.com>
URL: https://gitlist.dev/e/1215336279-99480-1-git-send-email-benji%40silverinsanity.com

```
The stat string was only initialized if the ref was local, but was
always used in a printf.  This meant that whatever data was on the
stack got printed.  In the case of "branch -av", this was probably the
tracking information of the last local branch.  If the case of "branch
-rv", this was "@???" in my case.

Signed-off-by: Brian Gernhardt <benji@silverinsanity.com>
---

 After looking through the second get of changes I pulled, I tried this:

 $ git branch -av
 * master                 3195299 [ahead 1] Make rebase save ORIG_HEAD if changing current branch
   origin/HEAD            08b51f5 [ahead 1] Merge branch 'qq/maint'
   origin/gitk-for-paulus 7d8856d [ahead 1] gitk: Update German translation.

 Huh. That doesn't look right...  Let's try just showing the remotes:

 $ git branch -rv
   origin/HEAD            08b51f5 @???Merge branch 'qq/maint'
   origin/gitk-for-paulus 7d8856d @???gitk: Update German translation.

 That's definately not good.

 I guess that other people either have a compiler that is more careful about
 clearing stack variables, or don't use "branch -v".

 builtin-branch.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-branch.c b/builtin-branch.c
index e9423d1..470c59f 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -327,7 +327,7 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
 	if (verbose) {
 		struct strbuf subject;
 		const char *sub = " **** invalid ref ****";
-		char stat[128];
+		char stat[128] = "";
 
 		strbuf_init(&subject, 0);
 
-- 
1.5.6.2.336.g3195

```

## Junio C Hamano, 2008-07-06 10:07

Subject: Re: [PATCH] branch -v: Prevent garbage output on remote refs
Message-ID: <7vhcb3fhqx.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vhcb3fhqx.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <1215336279-99480-1-git-send-email-benji@silverinsanity.com>

```
Thanks, but I have pushed out a slightly different change.

-- >8 --
branch -r -v: do not spit out garbage

The codepath to emit relationship between the branch and what it tracks
forgot to initialize a string buffer stat[] to empty when showing a
tracking branch.  This moves the emptying so that the buffer starts as
empty and stays so when no information is added to fix this issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

---
 builtin-branch.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/builtin-branch.c b/builtin-branch.c
index e9423d1..ff71f3d 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -287,10 +287,8 @@ static void fill_tracking_info(char *stat, const char *branch_name)
 	int ours, theirs;
 	struct branch *branch = branch_get(branch_name);
 
-	if (!stat_tracking_info(branch, &ours, &theirs) || (!ours && !theirs)) {
-		stat[0] = '\0';
+	if (!stat_tracking_info(branch, &ours, &theirs) || (!ours && !theirs))
 		return;
-	}
 	if (!ours)
 		sprintf(stat, "[behind %d] ", theirs);
 	else if (!theirs)
@@ -330,6 +328,7 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
 		char stat[128];
 
 		strbuf_init(&subject, 0);
+		stat[0] = '\0';
 
 		commit = lookup_commit(item->sha1);
 		if (commit && !parse_commit(commit)) {

```

## Brian Gernhardt, 2008-07-06 16:13

Subject: Re: [PATCH] branch -v: Prevent garbage output on remote refs
Message-ID: <337634A4-0B60-4803-8EE9-6D0B377F5AEE@silverinsanity.com>
URL: https://gitlist.dev/e/337634A4-0B60-4803-8EE9-6D0B377F5AEE%40silverinsanity.com
In-Reply-To: <7vhcb3fhqx.fsf@gitster.siamese.dyndns.org>

```

On Jul 6, 2008, at 6:07 AM, Junio C Hamano wrote:

> Thanks, but I have pushed out a slightly different change.
>
> -- >8 --
> branch -r -v: do not spit out garbage

Looks good, and more importantly works.  Cherry-picked it from pu onto  
next.  Hopefully it'll move there on it's own soon.

~~ Brian

```
