swiftlang/swift

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

Ouverte

#51 218 ouverte le 5 sept. 2018

 (1 commentaire) (0 réaction) (0 personne assignée)Swift (10 719 forks)batch import
bugcompilergood first issuelegacy driver

Métriques du dépôt

Stars
 (69 989 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

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.

Guide contributeur