On Sat, Jul 15, 2017 at 07:18:51PM +0200, René Scharfe wrote: > -- >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 > --- > 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