Karthik Nayak <karthik....@gmail.com> writes:

> @@ -2586,13 +2649,15 @@ int sha1_object_info_extended(const unsigned char 
> *sha1, struct object_info *oi,
>                       *(oi->disk_sizep) = 0;
>               if (oi->delta_base_sha1)
>                       hashclr(oi->delta_base_sha1);
> +             if (oi->typename)
> +                     strbuf_addstr(oi->typename, typename(co->type));
>               oi->whence = OI_CACHED;
>               return 0;
>       }

Just before the pre-context of this hunk, there is this bit:

        if (oi->typep)
                *(oi->typep) = co->type;

which tells me that the callers of this function is allowed to pass
a NULL in oi->typep when they are not interested in the type of the
object.

>       if (!find_pack_entry(real, &e)) {
>               /* Most likely it's a loose object. */
> -             if (!sha1_loose_object_info(real, oi)) {
> +             if (!sha1_loose_object_info(real, oi, flags)) {
>                       oi->whence = OI_LOOSE;
>                       return 0;
>               }
> @@ -2616,6 +2681,8 @@ int sha1_object_info_extended(const unsigned char 
> *sha1, struct object_info *oi,
>               oi->u.packed.is_delta = (rtype == OBJ_REF_DELTA ||
>                                        rtype == OBJ_OFS_DELTA);
>       }
> +     if (oi->typename)
> +             strbuf_addstr(oi->typename, typename(*oi->typep));

So, it makes me wonder what guarantee we have that this does not
dereference a NULL here.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to