From: Phillip Wood Date: Thu, 14 Oct 2021 09:40:27 GMT Subject: Re: [PATCH v3] sparse index: fix use-after-free bug in cache_tree_verify() Message-ID: <554ebfd6-63bd-50ec-5f55-4b5ea4a9fd03@gmail.com> In-Reply-To: <905e3d0f-0541-ffad-c05b-e7ebc6bed94c@gmail.com> Hi Bagas On 08/10/2021 10:38, Bagas Sanjaya wrote: > On 08/10/21 01.07, Phillip Wood via GitGitGadget wrote: >> -static void verify_one(struct repository *r, >> -               struct index_state *istate, >> -               struct cache_tree *it, >> -               struct strbuf *path) >> +/* >> + * Returns: >> + *  0 - Verification completed. >> + *  1 - Restart verification - a call to ensure_full_index() freed >> the cache >> + *      tree that is being verified and verification needs to be >> restarted from >> + *      the new toplevel cache tree. >> + */ >> +static int verify_one(struct repository *r, >> +              struct index_state *istate, >> +              struct cache_tree *it, >> +              struct strbuf *path) >>   { >>       int i, pos, len = path->len; >>       struct strbuf tree_buf = STRBUF_INIT; > > What is verify_one() doing? I think it worth mentioning it in the > comment above. I think it's pretty obvious if you read the code rather than my patch. It is a common pattern in git that a function with "one" in the name is a helper for another similarly named function without the "one". In this case verify_one() is a recursive helper for cache_tree_verify() Best Wishes Phillip