git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Usman Akinyemi via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Usman Akinyemi <usmanakinyemi202@gmail.com>
Subject: [PATCH v3 0/3] parse: replace atoi() with strtoul_ui() and strtol_i()
Date: Tue, 22 Oct 2024 05:23:40 +0000	[thread overview]
Message-ID: <pull.1810.v3.git.git.1729574624.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1810.v2.git.git.1729259580.gitgitgadget@gmail.com>

Changes from Version 2:

 * Use ${SQ} for single quote.
 * Change the commit message from Updated to Update, Replaced to Replace.
 * Format the commit message well.
 * Used warning for when marker size contains letters instead of die to
   avoid breaking somebody elses command as the test involve adding
   conflict_marker_size into .gitiattribute which is commited into the
   repository.

Usman Akinyemi (3):
  daemon: replace atoi() with strtoul_ui() and strtol_i()
  merge: replace atoi() with strtol_i() for marker size validation
  imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT
    parsing

 daemon.c              | 11 +++++++----
 imap-send.c           | 13 ++++++++-----
 merge-ll.c            | 11 +++++++++--
 t/t5570-git-daemon.sh | 26 ++++++++++++++++++++++++++
 t/t6406-merge-attr.sh |  6 ++++++
 5 files changed, 56 insertions(+), 11 deletions(-)


base-commit: 90fe3800b92a49173530828c0a17951abd30f0e1
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1810%2FUnique-Usman%2Fr_atoi-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1810/Unique-Usman/r_atoi-v3
Pull-Request: https://github.com/git/git/pull/1810

Range-diff vs v2:

 1:  a333d8a4013 ! 1:  e292b82d6a1 daemon: replace atoi() with strtoul_ui() and strtol_i()
     @@ Metadata
       ## Commit message ##
          daemon: replace atoi() with strtoul_ui() and strtol_i()
      
     -    Replaced atoi() with strtoul_ui() for --timeout and --init-timeout
     +    Replace atoi() with strtoul_ui() for --timeout and --init-timeout
          (non-negative integers) and with strtol_i() for --max-connections
          (signed integers). This improves error handling and input validation
          by detecting invalid values and providing clear error messages.
     -    Updated tests to ensure these arguments are properly validated.
     +    Update tests to ensure these arguments are properly validated.
      
          Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
      
     @@ daemon.c: int cmd_main(int argc, const char **argv)
       		if (!strcmp(arg, "--strict-paths")) {
      
       ## t/t5570-git-daemon.sh ##
     -@@
     - #!/bin/sh
     - 
     --test_description='test fetching over git protocol'
     -+test_description='test fetching over git protocol and daemon rejects invalid options'
     - GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
     - export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
     - 
      @@ t/t5570-git-daemon.sh: TEST_PASSES_SANITIZE_LEAK=true
       . ./test-lib.sh
       
     @@ t/t5570-git-daemon.sh: TEST_PASSES_SANITIZE_LEAK=true
      +	for arg in "3a" "-3"
      +	do
      +		test_must_fail git daemon --init-timeout="$arg" 2>actual_error &&
     -+		test_write_lines "fatal: invalid init-timeout '\''$arg'\'', expecting a non-negative integer" >expected &&
     ++		test_write_lines "fatal: invalid init-timeout ${SQ}$arg${SQ}, expecting a non-negative integer" >expected &&
      +		test_cmp actual_error expected || return 1
      +	done
      +'
     @@ t/t5570-git-daemon.sh: TEST_PASSES_SANITIZE_LEAK=true
      +	for arg in "3a" "-3"
      +	do
      +		test_must_fail git daemon --timeout="$arg" 2>actual_error &&
     -+		test_write_lines "fatal: invalid timeout '\''$arg'\'', expecting a non-negative integer" >expected &&
     ++		test_write_lines "fatal: invalid timeout ${SQ}$arg${SQ}, expecting a non-negative integer" >expected &&
      +		test_cmp actual_error expected || return 1
      +	done
      +'
      +
      +test_expect_success 'daemon rejects invalid --max-connections values' '
     ++	arg='3a' &&
      +	test_must_fail git daemon --max-connections=3a 2>actual_error &&
     -+	test_write_lines "fatal: invalid max-connections '\''3a'\'', expecting an integer" >expected &&
     ++	test_write_lines "fatal: invalid max-connections ${SQ}$arg${SQ}, expecting an integer" >expected &&
      +	test_cmp actual_error expected
      +'
      +
 2:  5d58c150efb ! 2:  2ad3b0faa05 merge: replace atoi() with strtol_i() for marker size validation
     @@ Metadata
       ## Commit message ##
          merge: replace atoi() with strtol_i() for marker size validation
      
     -    Replaced atoi() with strtol_i() for parsing conflict-marker-size to
     +    Replace atoi() with strtol_i() for parsing conflict-marker-size to
          improve error handling. Invalid values, such as those containing letters
          now trigger a clear error message.
     -    Updated the test to verify invalid input handling.
     +    Update the test to verify invalid input handling.
      
          Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
      
       ## merge-ll.c ##
     +@@
     + #include "merge-ll.h"
     + #include "quote.h"
     + #include "strbuf.h"
     ++#include "gettext.h"
     + 
     + struct ll_merge_driver;
     + 
      @@ merge-ll.c: enum ll_merge_result ll_merge(mmbuffer_t *result_buf,
       	git_check_attr(istate, path, check);
       	ll_driver_name = check->items[0].value;
       	if (check->items[1].value) {
      -		marker_size = atoi(check->items[1].value);
     -+		if (strtol_i(check->items[1].value, 10, &marker_size))
     -+			die("invalid marker-size '%s', expecting an integer", check->items[1].value);
     ++		if (strtol_i(check->items[1].value, 10, &marker_size)) {
     ++			marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
     ++			warning(_("invalid marker-size '%s', expecting an integer"), check->items[1].value);
     ++		}
       		if (marker_size <= 0)
       			marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
       	}
     @@ merge-ll.c: int ll_merge_marker_size(struct index_state *istate, const char *pat
       	git_check_attr(istate, path, check);
       	if (check->items[0].value) {
      -		marker_size = atoi(check->items[0].value);
     -+		if (strtol_i(check->items[0].value, 10, &marker_size))
     -+			die("invalid marker-size '%s', expecting an integer", check->items[0].value);
     ++		if (strtol_i(check->items[0].value, 10, &marker_size)) {
     ++			marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
     ++			warning(_("invalid marker-size '%s', expecting an integer"), check->items[0].value);
     ++		}
       		if (marker_size <= 0)
       			marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
       	}
     @@ t/t6406-merge-attr.sh: test_expect_success 'retry the merge with longer context'
       
      +test_expect_success 'invalid conflict-marker-size 3a' '
      +    echo "text conflict-marker-size=3a" >>.gitattributes &&
     -+    test_must_fail git checkout -m text 2>actual_error &&
     -+    test_write_lines "fatal: invalid marker-size '\''3a'\'', expecting an integer" >expected &&
     -+    test_cmp actual_error expected
     ++    git checkout -m text 2>error &&
     ++    test_grep "warning: invalid marker-size ${SQ}3a${SQ}, expecting an integer" error
      +'
      +
       test_expect_success 'custom merge backend' '
 3:  c09c7b3df0d ! 3:  d0aa756d2d0 imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing
     @@ Metadata
       ## Commit message ##
          imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing
      
     -    Replaced unsafe uses of atoi() with strtol_i() to improve error handling
     +    Replace unsafe uses of atoi() with strtol_i() to improve error handling
          when parsing UIDVALIDITY, UIDNEXT, and APPENDUID in IMAP commands.
     -    Invalid values, such as those with letters,
     -    now trigger error messages and prevent malformed status responses.
     +    Invalid values, such as those with letters, now trigger error messages and
     +    prevent malformed status responses.
     +    I did not add any test for this commit as we do not have any test
     +    for git-imap-send(1) at this point.
      
          Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
      

-- 
gitgitgadget

  parent reply	other threads:[~2024-10-22  5:23 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-12 23:09 [PATCH 0/3] R atoi Usman Akinyemi via GitGitGadget
2024-10-12 23:09 ` [PATCH 1/3] t3404: avoid losing exit status with focus on `git show` and `git cat-file` Usman Akinyemi via GitGitGadget
2024-10-14 21:29   ` Taylor Blau
2024-10-12 23:09 ` [PATCH 2/3] t3404: replace test with test_line_count() Usman Akinyemi via GitGitGadget
2024-10-14 21:35   ` Taylor Blau
2024-10-12 23:09 ` [PATCH 3/3] parse: replace atoi() with strtoul_ui() and strtol_i() Usman Akinyemi via GitGitGadget
2024-10-13  9:42   ` Usman Akinyemi
2024-10-14  9:00     ` Phillip Wood
2024-10-14 15:56       ` Usman Akinyemi
2024-10-14 10:53     ` Patrick Steinhardt
2024-10-14 13:57       ` Phillip Wood
2024-10-14 14:00         ` Patrick Steinhardt
2024-10-14 14:55           ` Phillip Wood
2024-10-14 16:13             ` Usman Akinyemi
2024-10-14 16:26               ` Usman Akinyemi
2024-10-14 18:36                 ` phillip.wood123
2024-10-15 15:17                   ` Usman Akinyemi
2024-10-15 16:19                     ` Taylor Blau
2024-10-16 17:58                       ` Usman Akinyemi
2024-10-15 18:28                     ` phillip.wood123
2024-10-16  9:20                       ` Phillip Wood
2024-10-16 18:00                         ` Usman Akinyemi
2024-10-17 11:56                   ` Usman Akinyemi
2024-10-17 12:02                     ` Patrick Steinhardt
2024-10-17 12:13                       ` Usman Akinyemi
2024-10-14 16:03       ` Usman Akinyemi
2024-10-14  9:49   ` Phillip Wood
2024-10-14 10:06     ` Kristoffer Haugsbakk
2024-10-14 13:48       ` Phillip Wood
2024-10-14 18:20     ` Usman Akinyemi
2024-10-14 18:30       ` phillip.wood123
2024-10-17 11:16     ` Usman Akinyemi
2024-10-18 13:52 ` [PATCH v2 0/3] " Usman Akinyemi via GitGitGadget
2024-10-18 13:52   ` [PATCH v2 1/3] daemon: " Usman Akinyemi via GitGitGadget
2024-10-21 12:20     ` Patrick Steinhardt
2024-10-21 13:43       ` Usman Akinyemi
2024-10-21 16:24         ` Taylor Blau
2024-10-21 16:34           ` Usman Akinyemi
2024-10-18 13:52   ` [PATCH v2 2/3] merge: replace atoi() with strtol_i() for marker size validation Usman Akinyemi via GitGitGadget
2024-10-21 12:20     ` Patrick Steinhardt
2024-10-21 14:24       ` Usman Akinyemi
2024-10-21 16:34         ` Taylor Blau
2024-10-21 16:39           ` Usman Akinyemi
2024-10-21 18:00           ` Usman Akinyemi
2024-10-21 19:56             ` Taylor Blau
2024-10-30 15:20       ` Phillip Wood
2024-10-30 16:19         ` Usman Akinyemi
2024-10-31  9:58           ` Phillip Wood
2024-10-31 12:21             ` Usman Akinyemi
2024-11-06  6:05               ` Usman Akinyemi
2024-11-06 16:03               ` phillip.wood123
2024-10-18 13:53   ` [PATCH v2 3/3] imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing Usman Akinyemi via GitGitGadget
2024-10-21 12:20     ` Patrick Steinhardt
2024-10-21 12:27       ` Usman Akinyemi
2024-10-21 12:34         ` Patrick Steinhardt
2024-10-21 14:38           ` Usman Akinyemi
2024-10-21 16:35             ` Taylor Blau
2024-10-21 16:36               ` Usman Akinyemi
2024-10-22 13:43           ` Usman Akinyemi
2024-10-18 21:21   ` [PATCH v2 0/3] parse: replace atoi() with strtoul_ui() and strtol_i() Taylor Blau
2024-10-18 21:29     ` Usman Akinyemi
2024-10-18 21:35       ` Taylor Blau
2024-10-18 21:43         ` Usman Akinyemi
2024-10-22  5:23   ` Usman Akinyemi via GitGitGadget [this message]
2024-10-22  5:23     ` [PATCH v3 1/3] daemon: " Usman Akinyemi via GitGitGadget
2024-10-22 16:21       ` Taylor Blau
2024-10-22 22:06         ` Usman Akinyemi
2024-10-22  5:23     ` [PATCH v3 2/3] merge: replace atoi() with strtol_i() for marker size validation Usman Akinyemi via GitGitGadget
2024-10-22  5:23     ` [PATCH v3 3/3] imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing Usman Akinyemi via GitGitGadget
2024-10-22 22:08     ` [PATCH v4 0/3] parse: replace atoi() with strtoul_ui() and strtol_i() Usman Akinyemi via GitGitGadget
2024-10-22 22:08       ` [PATCH v4 1/3] daemon: " Usman Akinyemi via GitGitGadget
2024-10-22 22:08       ` [PATCH v4 2/3] merge: replace atoi() with strtol_i() for marker size validation Usman Akinyemi via GitGitGadget
2024-10-22 22:08       ` [PATCH v4 3/3] imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing Usman Akinyemi via GitGitGadget
2024-10-23  6:05         ` Patrick Steinhardt
2024-10-23  7:40           ` Usman Akinyemi
2024-10-23  7:40       ` [PATCH v5 0/3] parse: replace atoi() with strtoul_ui() and strtol_i() Usman Akinyemi via GitGitGadget
2024-10-23  7:40         ` [PATCH v5 1/3] daemon: " Usman Akinyemi via GitGitGadget
2024-10-23 20:31           ` Taylor Blau
2024-10-24  0:23             ` Usman Akinyemi
2024-10-23  7:40         ` [PATCH v5 2/3] merge: replace atoi() with strtol_i() for marker size validation Usman Akinyemi via GitGitGadget
2024-10-23 20:32           ` Taylor Blau
2024-10-24  0:23             ` Usman Akinyemi
2024-10-23  7:40         ` [PATCH v5 3/3] imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing Usman Akinyemi via GitGitGadget
2024-10-23  8:52         ` [PATCH v5 0/3] parse: replace atoi() with strtoul_ui() and strtol_i() Patrick Steinhardt
2024-10-23 20:33           ` Taylor Blau
2024-10-24  0:25             ` Usman Akinyemi
2024-10-24  0:24         ` [PATCH v6 " Usman Akinyemi via GitGitGadget
2024-10-24  0:24           ` [PATCH v6 1/3] daemon: " Usman Akinyemi via GitGitGadget
2024-10-24  0:24           ` [PATCH v6 2/3] merge: replace atoi() with strtol_i() for marker size validation Usman Akinyemi via GitGitGadget
2024-10-24  0:24           ` [PATCH v6 3/3] imap: replace atoi() with strtol_i() for UIDVALIDITY and UIDNEXT parsing Usman Akinyemi via GitGitGadget
2024-10-24 18:03           ` [PATCH v6 0/3] parse: replace atoi() with strtoul_ui() and strtol_i() Taylor Blau
2024-10-25  5:06             ` Patrick Steinhardt
2024-10-25  6:11               ` Usman Akinyemi
2024-10-25 14:44                 ` Taylor Blau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.1810.v3.git.git.1729574624.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=usmanakinyemi202@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).