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
next prev 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).