From b45833dc668ce06d23eeec3fafa546d47078d67a Mon Sep 17 00:00:00 2001 From: ChaonengQuan Date: Tue, 12 Nov 2024 08:08:20 -0800 Subject: [PATCH] fix: Skip misformatted configuration files --- libmamba/src/api/configuration.cpp | 8 ++++++++ libmamba/tests/src/core/test_configuration.cpp | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/libmamba/src/api/configuration.cpp b/libmamba/src/api/configuration.cpp index a3b34337d1..631a68e67c 100644 --- a/libmamba/src/api/configuration.cpp +++ b/libmamba/src/api/configuration.cpp @@ -2082,6 +2082,14 @@ namespace mamba strStream << inFile.rdbuf(); std::string s = strStream.str(); config = YAML::Load(expandvars(s)); + if (config.IsScalar()) + { + LOG_WARNING << fmt::format( + "The configuration file at {} is misformatted or corrupted. Skipping file.", + file.string() + ); + return YAML::Node(); + } } catch (const std::exception& ex) { diff --git a/libmamba/tests/src/core/test_configuration.cpp b/libmamba/tests/src/core/test_configuration.cpp index b2e7de68d5..2f5a462a76 100644 --- a/libmamba/tests/src/core/test_configuration.cpp +++ b/libmamba/tests/src/core/test_configuration.cpp @@ -901,6 +901,15 @@ namespace mamba env::unset("MAMBA_CHANNEL_PRIORITY"); } + TEST_CASE_FIXTURE(Configuration, "skip_misformatted_config_file") + { + std::string rc = "invalid_scalar_value"; + load_test_config(rc); + CHECK_EQ(config.sources().size(), 1); + CHECK_EQ(config.valid_sources().size(), 0); + CHECK_EQ(config.dump(), ""); + } + TEST_CASE_FIXTURE(Configuration, "pinned_packages") { std::string rc1 = unindent(R"(