Re: [PATCH 30/33] tree-diff: convert diff_tree_paths to struct object_id
On Sat, Jul 15, 2017 at 07:18:51PM +0200, René Scharfe wrote:
Show 31 quoted lines
> -- >8 --
> Subject: [PATCH] tree-diff: don't access hash of NULL object_id pointer
>
> The object_id pointers can be NULL for invalid entries. Don't try to
> dereference them and pass NULL along to fill_tree_descriptor() instead,
> which handles them just fine.
>
> Found with Clang's UBSan.
>
> Signed-off-by: Rene Scharfe <l.s.r@web.de>
> ---
> fill_tree_descriptor() can easily be converted to object_id, by the
> way, which would get us rid of the extra check introduced here, but
> this patch is meant as a minimal fix.
>
> tree-diff.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tree-diff.c b/tree-diff.c
> index bd6d65a409..2357f72899 100644
> --- a/tree-diff.c
> +++ b/tree-diff.c
> @@ -421,8 +421,9 @@ static struct combine_diff_path *ll_diff_tree_paths(
> * diff_tree_oid(parent, commit) )
> */
> for (i = 0; i < nparent; ++i)
> - tptree[i] = fill_tree_descriptor(&tp[i], parents_oid[i]->hash);
> - ttree = fill_tree_descriptor(&t, oid->hash);
> + tptree[i] = fill_tree_descriptor(&tp[i],
> + parents_oid[i] ? parents_oid[i]->hash : NULL);
> + ttree = fill_tree_descriptor(&t, oid ? oid->hash : NULL);
Good catch. This seems obviously correct.
--
brian m. carlson / brian with sandals: Houston, Texas, US
https://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: https://keybase.io/bk2204