swiftlang/swift

[SR-8706] Fix up parseDependencyFile to not crash on invalid YAML

Aperta

#51.218 aperta il 5 set 2018

 (1 commento) (0 reazioni) (0 assegnatari)Swift (10.719 fork)batch import
bugcompilergood first issuelegacy driver

Metriche repository

Star
 (69.989 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

Previous ID SR-8706
Radar rdar://problem/25095498
Original Reporter @belkadan
Type Bug
Votes 0
Component/s Compiler
Labels Bug, Driver, StarterBug
Assignee kushaj (JIRA)
Priority Medium

md5: dfcb979cb9d3bef3f8ec210cda836a79

relates to:

  • SR-8707 Write out swiftdeps files atomically

Issue Description:

LLVM's YAML parser returns null when it encounters a malformed node, but parseDependencyFile (in DependencyFile.cpp) isn't checking for this. We should fix this so that a malformed "swiftdeps" file doesn't result in crashes.

This applies to all uses of the LLVM YAML parser, really:

  • OutputFileMap::parse in OutputFileMap.cpp

  • populateOutOfDateMap in Driver.cpp

  • YamlGroupInputParser in Serialization.cpp already seems to be doing this correctly.

  • APIDiffItemStore and SILPassPipelinePlan::getPassPipelineFromFile don't really have to care about malformed input.

Tests for these APIs can go into the unittests/Driver/ folder.

Guida contributor