Thread (361 messages) 361 messages, 13 authors, 2d ago

Re: [PATCH v10 7/8] transport: add client support for object-info

From: Peijian Ju <hidden>
Date: 2025-02-20 22:52:53

On Fri, Jan 31, 2025 at 9:08 PM Jeff King [off-list ref] wrote:
On Mon, Jan 13, 2025 at 09:14:59PM -0500, Eric Ju wrote:
quoted
@@ -464,8 +465,33 @@ static int fetch_refs_via_pack(struct transport *transport,
      args.server_options = transport->server_options;
      args.negotiation_tips = data->options.negotiation_tips;
      args.reject_shallow_remote = transport->smart_options->reject_shallow;
+     args.object_info = transport->smart_options->object_info;
+
+     if (transport->smart_options && transport->smart_options->object_info
Coverity complains about the check for a NULL transport->smart_options
here. If it's NULL we'd already have segfaulted a few lines above when
we look at the reject_shallow flag.

Not sure if that's an existing bug in the earlier code or not. ;) Your
extra check can't hurt anything, in the sense that it's just being
overly defensive, but it does make puzzling out the expected value of
smart_options harder.

-Peff
Thank you Jeff. Sorry for the late response.

I will remove the extra check. transport->smart_options will not be
NULL when it reaches
`args.reject_shallow_remote = transport->smart_options->reject_shallow;`

The call sequence is like this

get_remote_info() in cat-file.c  ==>  transport_fetch_refs() ==>
transport->vtable->fetch_refs ==> fetch_refs_via_pack()

in get_remote_info(), we already have a check for NULL:

if (gtransport->smart_options) {
  ...
}  else {
        retval = -1;
}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help