Re: [PATCH v3] sparse index: fix use-after-free bug in cache_tree_verify()
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Oct 14, 2021, 09:40 UTC
- 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:
Show 24 quoted lines
> 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