commit cf13dc241e5fc1b18f9eca7a47b2fb0d2178cbb3
parent 256c385e64cdbe825a2733f9a5378c796100fe0f
Author: JohnMcPMS <johnmcp@microsoft.com>
Date: Wed, 20 Mar 2024 15:37:17 -0700
Ignore corrupted source data (#4291)
Rather than a failure here, we will treat corrupt source data as simply
empty. The only recourse the user currently has is to delete it anyway,
and COM callers have no means to mitigate it.
Diffstat:
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/AppInstallerCLITests/Sources.cpp b/src/AppInstallerCLITests/Sources.cpp
@@ -312,14 +312,14 @@ TEST_CASE("RepoSources_InvalidYAML", "[sources]")
{
SetSetting(Stream::UserSources, "Name: Value : BAD");
- REQUIRE_THROWS_HR(GetSources(), APPINSTALLER_CLI_ERROR_SOURCES_INVALID);
+ REQUIRE_NOTHROW(GetSources());
}
TEST_CASE("RepoSources_MissingField", "[sources]")
{
SetSetting(Stream::UserSources, s_SingleSource_MissingArg);
- REQUIRE_THROWS_HR(GetSources(), APPINSTALLER_CLI_ERROR_SOURCES_INVALID);
+ REQUIRE_NOTHROW(GetSources());
}
TEST_CASE("RepoSources_AddSource", "[sources]")
@@ -1300,4 +1300,4 @@ TEST_CASE("RepoSources_BuiltInDesktopFrameworkSourceAlwaysCreatable", "[sources]
{
Source source(WellKnownSource::DesktopFrameworks);
REQUIRE(source);
-}-
\ No newline at end of file
+}
diff --git a/src/AppInstallerRepositoryCore/SourceList.cpp b/src/AppInstallerRepositoryCore/SourceList.cpp
@@ -145,7 +145,10 @@ namespace AppInstaller::Repository
else
{
std::vector<SourceDetailsInternal> result;
- THROW_HR_IF(APPINSTALLER_CLI_ERROR_SOURCES_INVALID, !TryReadSourceDetails(setting.GetName(), *sourcesStream, rootName, parse, result));
+ if (!TryReadSourceDetails(setting.GetName(), *sourcesStream, rootName, parse, result))
+ {
+ AICLI_LOG(YAML, Error, << "Ignoring corrupted source data.");
+ }
return result;
}
}