Re: [PATCH v3] diff-delta: use safe integer arithmetic
- From
- Srujith Poojary <poojarysrujith@gmail.com>
- Date
- Oct 25, 2026, 19:21 UTC
- Message-ID
- <CABh_KWhE1eWYt60TvcN_7sAe6ORut2YH7a5Zmu2zLobv=VSefg@mail.gmail.com>
- In-Reply-To
- <xmqqmrs1y7kj.fsf@gitster.g>
On Sun, Oct 25, 2026 at 11:40 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 19 quoted lines
> > Srujith Poojary <poojarysrujith@gmail.com> writes: > > > Thank you for the detailed correction. > > > > I have expanded the commit message to include the step-by-step > > breakdown for both the unpacked and packed index allocations, > > detailing the caps on hsize (2^26) and entries (2^28) alongside struct > > padding on 32-bit systems. I also corrected the phrasing regarding > > (hsize + 1) being passed as an argument to st_add3(). > > It seems that the text of v4 did not "detail" anything like that; > you just parroted the conclusion, the final numbers I gave you, > without giving any hint for the readers to validate the math. The > readers who are interested in validating are forced to figure out > how many bytes your calculation assumes each struct type involved > consume---and if they find that your conclusion is wrong, they have > no clue where in your computation things went wrong. >
Hi Junio,
Thank you for pointing that out. You are completely right—I should have explicitly detailed the struct sizes and exact code bounds instead of quoting summary numbers.
I have updated the commit message in v5 to explicitly state: - The byte sizes of each struct on 32-bit platforms (12/16 bytes for unpacked_index_entry, 4 bytes for hash pointers). - The exact origin of the bounds from code: entries capped by (0xffffffu / RABIN_WINDOW = 1,048,575) and hsize capped at 1,048,576. - Why st_mult/st_add/st_add3 are used to guard against size_t wrap-around.
Best regards, Srujith