Skip to content

Commit 86a36cd

Browse files
committed
Fix --premium-license CLI parsing
1 parent 7d0d721 commit 86a36cd

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

cli/cmdlineparser.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1159,7 +1159,10 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
11591159
if (!parseNumberArg(argv[i], 31, tmp, true))
11601160
return Result::Fail;
11611161
}
1162-
mSettings.premiumArgs += "--" + p;
1162+
if (p.find(' ') != std::string::npos)
1163+
mSettings.premiumArgs += "\"--" + p + "\"";
1164+
else
1165+
mSettings.premiumArgs += "--" + p;
11631166
if (isCodingStandard) {
11641167
// All checkers related to the coding standard should be enabled. The coding standards
11651168
// do not all undefined behavior or portability issues.

test/testcmdlineparser.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ class TestCmdlineParser : public TestFixture {
262262
TEST_CASE(premiumOptionsMetrics);
263263
TEST_CASE(premiumOptionsCertCIntPrecision);
264264
TEST_CASE(premiumOptionsLicenseFile);
265+
TEST_CASE(premiumOptionsLicenseFilePathWithSpace);
265266
TEST_CASE(premiumOptionsInvalid1);
266267
TEST_CASE(premiumOptionsInvalid2);
267268
TEST_CASE(premiumSafety);
@@ -1642,6 +1643,14 @@ class TestCmdlineParser : public TestFixture {
16421643
ASSERT_EQUALS("--license-file=file.lic", settings->premiumArgs);
16431644
}
16441645

1646+
void premiumOptionsLicenseFilePathWithSpace() {
1647+
REDIRECT;
1648+
asPremium();
1649+
const char * const argv[] = {"cppcheck", "--premium-license-file=license folder/file.lic", "file.c"};
1650+
ASSERT_EQUALS_ENUM(CmdLineParser::Result::Success, parseFromArgs(argv));
1651+
ASSERT_EQUALS("\"--license-file=license folder/file.lic\"", settings->premiumArgs);
1652+
}
1653+
16451654
void premiumOptionsInvalid1() {
16461655
REDIRECT;
16471656
asPremium();

0 commit comments

Comments
 (0)