LibCore: Use Vector instead of VLA in ArgsParser::parse()

If there happens to be zero positional arguments, this constructs a
0-length VLA, which is UB caught by UBSAN.
This commit is contained in:
Andrew Kaster 2021-05-14 23:42:13 -06:00 committed by Linus Groh
parent 11214bc94d
commit b9d65da5c8
Notes: sideshowbarker 2024-07-19 01:59:31 +09:00

View file

@ -106,7 +106,8 @@ bool ArgsParser::parse(int argc, char** argv, bool exit_on_failure)
// We're done processing options, now let's parse positional arguments.
int values_left = argc - optind;
int num_values_for_arg[m_positional_args.size()];
Vector<int, 16> num_values_for_arg;
num_values_for_arg.resize(m_positional_args.size(), true);
int total_values_required = 0;
for (size_t i = 0; i < m_positional_args.size(); i++) {
auto& arg = m_positional_args[i];