RE: [PATCH] git-compat-util: avoid failing dir ownership checks if running privileged
On April 27, 2022 1:22 PM, Phillip Wood wrote:
Show 38 quoted lines
>On 27/04/2022 17:19, Junio C Hamano wrote:
>> Carlo Arenas <carenas@gmail.com> writes:
>>>> The standard is silent on what happens to error when the value is
>>>> out of range.
>>
>> Actually the standard is is very clear what happens to endptr (no,
>> don't call it "error", that is not the point of the parameter).
> >
>> A pointer to the final string shall be stored in the object
>> pointed to by endptr, provided that endptr is not a null
>> pointer.
>>
>> where "final string" has a precise definition much earlier:
>>
>> First, they decompose the input string into three parts:
>>
>> 1. An initial, possibly empty, sequence of white-space
>> characters (as specified by isspace())
>>
>> 2. A subject sequence interpreted as an integer represented in
>> some radix determined by the value of base
>>
>> 3. A final string of one or more unrecognized characters,
>> including the terminating null byte of the input string.
>>
>> Then they shall attempt to convert the subject sequence to an
>> integer, and return the result.
>>
>> So, leading whitespace is stripped, then "subject sequence" that is
>> the sequence of digits (with optional +/- sign) to be turned into a
>> long is recognised, and what remains is the "final string". endptr is
>> made to point at that "final string", and it does not matter what kind
>> of value the interpretation of "subject sequence" yields.
>
>Oh I think I misunderstood when I read the standard this morning. Just to check I
>do understand now, in the case of overflow entptr points to the final string (i.e. to
>the character following the last digit) even though the "subject sequence" cannot
>be successfully converted?
I can confirm this on multiple 32-bit platforms. With strtol("123456789012345678", &endptr, 10) returns 2147483647 and *endptr == '\0' just beyond the last 8.