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
Eric Sunshine <sunshine@sunshineco.com>
Date
Jan 6, 2025, 22:22 UTC
Message-ID
<CAPig+cR0GgZQ+XCyAh=xHRfjfsAdTzC2uyML1vnoM_fXv1Bxew@mail.gmail.com>
In-Reply-To
<20250106190855.3098-3-soekkle@freenet.de>
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/
Show 12 quoted lines
> 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. But if that's the case, you should use the commit message to explain to readers that you have audited the code and verified that `len` will never be zero or that the condition remains safe despite wraparound. Also, even if you verify that this change is perfectly safe, because it _appears_ to be a potentially behavior breaking change, you should isolate it in its own commit, separate from the other changes, to let reviewers know that it deserves special scrutiny.

Previous: Sören KreckerNext: Andreas Schwab
Message 3 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.