Subject: Re: [PATCH 3/4] builtin-fast-export.c: fix crash on tagged trees

From: Junio C Hamano <[email-masked]>
Date: Sun, 22 Mar 2009 17:39:59 -0700

Erik Faye-Lund <[email-masked]> writes:

> If a tag object points to a tree (or another unhandled type), the commit-
> pointer is left uninitialized and later dereferenced. This patch adds a default
> case to the switch that issues a warning and skips the object.
>
> Signed-off-by: Erik Faye-Lund <[email-masked]>
> ---
>  builtin-fast-export.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/builtin-fast-export.c b/builtin-fast-export.c
> index 02bad1f..c3ce320 100644
> --- a/builtin-fast-export.c
> +++ b/builtin-fast-export.c
> @@ -375,6 +375,10 @@ static void get_tags_and_duplicates(struct object_array *pending,
>  			case OBJ_BLOB:
>  				handle_object(tag->object.sha1);
>  				continue;
> +			default: /* OBJ_TAG (nested tags) is already handled */

The comment is good but only if you make this the last patch that comes
after the one that actually fixes the tag-to-tag (currently 4/4), no?

> +				warning("Tag points to object of unexpected type %s, skipping.",
> +				        typename(tag->object.type));
> +				continue;
>  			}
>  			break;
>  		default:
> -- 
> 1.6.2.1.226.gcb2dd