git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCHv2 2/4] date.c: Fix type missmatch warings from msvc

From
Andreas Schwab <schwab@linux-m68k.org>
Date
Jan 6, 2025, 22:53 UTC
Message-ID
<87sepvpna6.fsf@igel.home>
In-Reply-To
<CAPig+cR0GgZQ+XCyAh=xHRfjfsAdTzC2uyML1vnoM_fXv1Bxew@mail.gmail.com>
On Jan 06 2025, Eric Sunshine wrote:
Show 28 quoted lines
> On Mon, Jan 6, 2025 at 2:14 PM Sören Krecker <soekkle@freenet.de> wrote:
>> Fix compiler warings from msvc in date.c for value truncation from 64
>> bit to 32 bit integers.
>
> s/warings/warnings/
>
>> Also switch from int to size_t for all variables with result of strlen()
>> which cannot become negative.
>>
>> Signed-off-by: Sören Krecker <soekkle@freenet.de>
>> ---
>> diff --git a/date.c b/date.c
>> @@ -1270,7 +1270,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
>>         tl = typelen;
>>         while (tl->type) {
>> -               int len = strlen(tl->type);
>> +               size_t len = strlen(tl->type);
>>                 if (match_string(date, tl->type) >= len-1) {
>
> This change looks scary and potentially wrong considering that the
> expression in the `if` statement subtracts 1 from `len`. If `len`
> happens to be zero, then `len-1` will wrap around to a very large
> number, thus potentially changing the meaning of the `if` condition.
>
> Now, admittedly, I haven't delved into this code or thought about it
> much, so I may be entirely wrong about this; perhaps it is impossible
> for `len` to ever be zero in this context or perhaps the meaning of
> the `if` condition doesn't change even if it wraps around.
It can be made more robust by moving the constant to the other side:
                if (match_string(date, tl->type)+1 >= len) {
-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."
Previous: Eric SunshineNext: Sören Krecker
Message 4 of 12 in “[PATCHv2 0/4] Fixes typemissmatch warinigs from msvc”
  1. Sören KreckerJan 6, 2025
  2. 2/4 date.c: Fix type missmatch warings from msvcSören Krecker, Jan 6, 2025
  3. Eric SunshineJan 6, 2025
  4. Andreas SchwabJan 6, 2025
  5. 1/4 add-patch: Fix type missmatch rom msvcSören Krecker, Jan 6, 2025
  6. brian m. carlsonJan 7, 2025
  7. Junio C HamanoJan 7, 2025
  8. Junio C HamanoJan 7, 2025
  9. 4/4 commit.c: Fix type missmatch warings from msvcSören Krecker, Jan 6, 2025
  10. Eric SunshineJan 6, 2025
  11. 3/4 apply.c : Fix type missmatch warings from msvcSören Krecker, Jan 6, 2025
  12. Eric SunshineJan 6, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.