mirror of
https://github.com/git/git.git
synced 2024-11-26 19:43:32 +08:00
daemon: replace atoi() with strtoul_ui() and strtol_i()
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> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
parent
34b6ce9b30
commit
cc4023477f
12
daemon.c
12
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")) {
|
||||
|
@ -8,6 +8,31 @@ 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>err &&
|
||||
test_grep "fatal: invalid init-timeout ${SQ}$arg${SQ}, expecting a non-negative integer" err ||
|
||||
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>err &&
|
||||
test_grep "fatal: invalid timeout ${SQ}$arg${SQ}, expecting a non-negative integer" err ||
|
||||
return 1
|
||||
done
|
||||
'
|
||||
|
||||
test_expect_success 'daemon rejects invalid --max-connections values' '
|
||||
arg='3a' &&
|
||||
test_must_fail git daemon --max-connections=3a 2>err &&
|
||||
test_grep "fatal: invalid max-connections ${SQ}$arg${SQ}, expecting an integer" err
|
||||
'
|
||||
|
||||
start_git_daemon
|
||||
|
||||
check_verbose_connect () {
|
||||
|
Loading…
Reference in New Issue
Block a user