fix: handle invalid option numbers (#1961)

This commit is contained in:
vmobilis 2026-09-11 18:16:39 +03:00 committed by GitHub
parent e95ab96997
commit 3191b23d4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -302,7 +302,11 @@ bool parse_options(int argc, const char** argv, const std::vector<ArgOptions>& o
invalid_arg = true; invalid_arg = true;
return; return;
} }
try {
*option.target = std::stoi(argv[i]); *option.target = std::stoi(argv[i]);
} catch (const std::invalid_argument&) {
invalid_arg = true;
}
found_arg = true; found_arg = true;
})) }))
break; break;
@ -312,7 +316,11 @@ bool parse_options(int argc, const char** argv, const std::vector<ArgOptions>& o
invalid_arg = true; invalid_arg = true;
return; return;
} }
try {
*option.target = std::stof(argv[i]); *option.target = std::stof(argv[i]);
} catch (const std::invalid_argument&) {
invalid_arg = true;
}
found_arg = true; found_arg = true;
})) }))
break; break;
@ -337,7 +345,8 @@ bool parse_options(int argc, const char** argv, const std::vector<ArgOptions>& o
if (invalid_arg) { if (invalid_arg) {
if (!valid) { if (!valid) {
LOG_ERROR("error: invalid parameter for argument: %s", arg.c_str()); LOG_ERROR("error: invalid parameter for argument \"%s\": \"%s\"",
arg.c_str(), (i >= argc) ? "" : argv[i]);
} }
return false; return false;
} }