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: Taylor Blau <me@ttaylorr.com>, Patrick Steinhardt <ps@pks.im>,
	Usman Akinyemi <usmanakinyemi202@gmail.com>,
	Usman Akinyemi <usmanakinyemi202@gmail.com>
Subject: [PATCH v5 1/3] daemon: replace atoi() with strtoul_ui() and strtol_i()
Date: Wed, 23 Oct 2024 07:40:18 +0000	[thread overview]
Message-ID: <d9c997d7a9c8975ce845aa0cb4deaba22cbf3b94.1729669221.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1810.v5.git.git.1729669220.gitgitgadget@gmail.com>

From: Usman Akinyemi <usmanakinyemi202@gmail.com>

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.
Update tests to ensure these arguments are properly validated.

Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
---
 daemon.c              | 12 ++++++++----
 t/t5570-git-daemon.sh | 26 ++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/daemon.c b/daemon.c
index cb946e3c95f..a40e435c637 100644
--- a/daemon.c
+++ b/daemon.c
@@ -4,6 +4,7 @@
 #include "abspath.h"
 #include "config.h"
 #include "environment.h"
+#include "gettext.h"
 #include "path.h"
 #include "pkt-line.h"
 #include "protocol.h"
@@ -1308,17 +1309,20 @@ int cmd_main(int argc, const char **argv)
 			continue;
 		}
 		if (skip_prefix(arg, "--timeout=", &v)) {
-			timeout = atoi(v);
+			if (strtoul_ui(v, 10, &timeout))
+				die(_("invalid timeout '%s', expecting a non-negative integer"), v);
 			continue;
 		}
 		if (skip_prefix(arg, "--init-timeout=", &v)) {
-			init_timeout = atoi(v);
+			if (strtoul_ui(v, 10, &init_timeout))
+				die(_("invalid init-timeout '%s', expecting a non-negative integer"), v);
 			continue;
 		}
 		if (skip_prefix(arg, "--max-connections=", &v)) {
-			max_connections = atoi(v);
+			if (strtol_i(v, 10, &max_connections))
+				die(_("invalid max-connections '%s', expecting an integer"), v);
 			if (max_connections < 0)
-				max_connections = 0;	        /* unlimited */
+				max_connections = 0;  /* unlimited */
 			continue;
 		}
 		if (!strcmp(arg, "--strict-paths")) {
diff --git a/t/t5570-git-daemon.sh b/t/t5570-git-daemon.sh
index c5f08b67996..722ddb8b7fa 100755
--- a/t/t5570-git-daemon.sh
+++ b/t/t5570-git-daemon.sh
@@ -8,6 +8,32 @@ TEST_PASSES_SANITIZE_LEAK=true
 . ./test-lib.sh
 
 . "$TEST_DIRECTORY"/lib-git-daemon.sh
+
+test_expect_success 'daemon rejects invalid --init-timeout values' '
+	for arg in "3a" "-3"
+	do
+		test_must_fail git daemon --init-timeout="$arg" 2>actual_error &&
+		test_write_lines "fatal: invalid init-timeout ${SQ}$arg${SQ}, expecting a non-negative integer" >expected &&
+		test_cmp actual_error expected || return 1
+	done
+'
+
+test_expect_success 'daemon rejects invalid --timeout values' '
+	for arg in "3a" "-3"
+	do
+		test_must_fail git daemon --timeout="$arg" 2>actual_error &&
+		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 ${SQ}$arg${SQ}, expecting an integer" >expected &&
+	test_cmp actual_error expected
+'
+
 start_git_daemon
 
 check_verbose_connect () {
-- 
gitgitgadget


  reply	other threads:[~2024-10-23  7:40 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   ` [PATCH v3 " Usman Akinyemi via GitGitGadget
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         ` Usman Akinyemi via GitGitGadget [this message]
2024-10-23 20:31           ` [PATCH v5 1/3] daemon: " 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=d9c997d7a9c8975ce845aa0cb4deaba22cbf3b94.1729669221.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.com \
    --cc=ps@pks.im \
    --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).