From b9d65da5c89a2bd42e6108d9bf8eab14b5f19566 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Fri, 14 May 2021 23:42:13 -0600 Subject: [PATCH] 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. --- Userland/Libraries/LibCore/ArgsParser.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibCore/ArgsParser.cpp b/Userland/Libraries/LibCore/ArgsParser.cpp index c942c60695..56fa4df5c6 100644 --- a/Userland/Libraries/LibCore/ArgsParser.cpp +++ b/Userland/Libraries/LibCore/ArgsParser.cpp @@ -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 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];