[PATCH 3/5] batctl: tpmeter: reject invalid test duration argument
Sven Eckelmann <[email protected]> Tue, 07 Jul 2026 21:17:02 +0200
| Newsgroups | org.open-mesh.lists.batman |
|---|---|
| Message-ID | <[email protected]> |
The -t option parses its argument with strtoul and
assigns the result straight into the uint32_t test length without any
validation.
Use the same strto* validation as the rest of batctl and print a user
readable error in case of an parsing error.
Fixes: f109b3473f86 ("batctl: introduce throughput meter support")
Signed-off-by: Sven Eckelmann <[email protected]>
---
throughputmeter.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/throughputmeter.c b/throughputmeter.c
index fd4165c..7d41c10 100644
--- a/throughputmeter.c
+++ b/throughputmeter.c
@@ -329,15 +329,26 @@ static int throughputmeter(struct state *state, int argc, char **argv)
};
struct bat_host *bat_host;
int ret = EXIT_FAILURE;
+ unsigned long time_arg;
uint64_t throughput;
uint32_t time = 0;
char *dst_string;
+ char *endptr;
int optchar;
while ((optchar = getopt(argc, argv, "t:n")) != -1) {
switch (optchar) {
case 't':
- time = strtoul(optarg, NULL, 10);
+ time_arg = strtoul(optarg, &endptr, 10);
+ if (!endptr || *endptr != '\0' || endptr == optarg ||
+ time_arg > UINT32_MAX) {
+ fprintf(stderr,
+ "Error - the supplied test duration is invalid: %s\n",
+ optarg);
+ tp_meter_usage();
+ return EXIT_FAILURE;
+ }
+ time = time_arg;
break;
case 'n':
read_opt &= ~USE_BAT_HOSTS;
--
2.47.3