Skip to content

Commit cf13dc2

Browse files
authored
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.
1 parent 256c385 commit cf13dc2

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/AppInstallerCLITests/Sources.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,14 +312,14 @@ TEST_CASE("RepoSources_InvalidYAML", "[sources]")
312312
{
313313
SetSetting(Stream::UserSources, "Name: Value : BAD");
314314

315-
REQUIRE_THROWS_HR(GetSources(), APPINSTALLER_CLI_ERROR_SOURCES_INVALID);
315+
REQUIRE_NOTHROW(GetSources());
316316
}
317317

318318
TEST_CASE("RepoSources_MissingField", "[sources]")
319319
{
320320
SetSetting(Stream::UserSources, s_SingleSource_MissingArg);
321321

322-
REQUIRE_THROWS_HR(GetSources(), APPINSTALLER_CLI_ERROR_SOURCES_INVALID);
322+
REQUIRE_NOTHROW(GetSources());
323323
}
324324

325325
TEST_CASE("RepoSources_AddSource", "[sources]")
@@ -1300,4 +1300,4 @@ TEST_CASE("RepoSources_BuiltInDesktopFrameworkSourceAlwaysCreatable", "[sources]
13001300
{
13011301
Source source(WellKnownSource::DesktopFrameworks);
13021302
REQUIRE(source);
1303-
}
1303+
}

src/AppInstallerRepositoryCore/SourceList.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@ namespace AppInstaller::Repository
145145
else
146146
{
147147
std::vector<SourceDetailsInternal> result;
148-
THROW_HR_IF(APPINSTALLER_CLI_ERROR_SOURCES_INVALID, !TryReadSourceDetails(setting.GetName(), *sourcesStream, rootName, parse, result));
148+
if (!TryReadSourceDetails(setting.GetName(), *sourcesStream, rootName, parse, result))
149+
{
150+
AICLI_LOG(YAML, Error, << "Ignoring corrupted source data.");
151+
}
149152
return result;
150153
}
151154
}

0 commit comments

Comments
 (0)