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:
Usman Akinyemi
2024-10-24 00:24:56 +00:00
committed by Taylor Blau
parent 34b6ce9b30
commit cc4023477f
2 changed files with 33 additions and 4 deletions

View File

@ -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")) {