From 36cca158819281fe2fbc81729fe292a979dd14f5 Mon Sep 17 00:00:00 2001 From: firewave Date: Fri, 12 Jul 2024 09:05:54 +0200 Subject: [PATCH] bail out early on empty library in CLI --- cli/cmdlineparser.cpp | 5 ++++- test/testcmdlineparser.cpp | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cli/cmdlineparser.cpp b/cli/cmdlineparser.cpp index dd7ad33054a..ae39951d855 100644 --- a/cli/cmdlineparser.cpp +++ b/cli/cmdlineparser.cpp @@ -870,9 +870,12 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a // --library else if (std::strncmp(argv[i], "--library=", 10) == 0) { - // TODO: bail out on empty library std::list libs = splitString(argv[i] + 10, ','); for (auto& l : libs) { + if (l.empty()) { + mLogger.printError("empty library specified."); + return Result::Fail; + } mSettings.libraries.emplace_back(std::move(l)); } } diff --git a/test/testcmdlineparser.cpp b/test/testcmdlineparser.cpp index 48cc194750a..21700461f1e 100644 --- a/test/testcmdlineparser.cpp +++ b/test/testcmdlineparser.cpp @@ -2464,14 +2464,14 @@ class TestCmdlineParser : public TestFixture { REDIRECT; const char * const argv[] = {"cppcheck", "--library=posix,,gnu", "file.cpp"}; ASSERT_EQUALS(false, parser->fillSettingsFromArgs(3, argv)); - ASSERT_EQUALS("cppcheck: Failed to load library configuration file ''. File not found\n", logger->str()); + ASSERT_EQUALS("cppcheck: error: empty library specified.\n", logger->str()); } void libraryMultipleEmpty2() { REDIRECT; const char * const argv[] = {"cppcheck", "--library=posix,gnu,", "file.cpp"}; ASSERT_EQUALS(false, parser->fillSettingsFromArgs(3, argv)); - ASSERT_EQUALS("cppcheck: Failed to load library configuration file ''. File not found\n", logger->str()); + ASSERT_EQUALS("cppcheck: error: empty library specified.\n", logger->str()); } void suppressXml() {