dotnet/msbuild

Prevent infinite recursion in Solution parser when a project is nested under itself

Open

#1 599 ouverte le 22 janv. 2017

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)C# (1 364 forks)batch import
Area: Solution (.sln)help wantedtriaged

Métriques du dépôt

Stars
 (5 062 stars)
Métriques de merge PR
 (Merge moyen 11j 7h) (125 PRs mergées en 30 j)

Description

We don't check for invalid project nestings in the solution file, so it's possible to create a solution that crashes MSBuild with stack overflow:

https://github.com/Microsoft/msbuild/blob/xplat/src/XMakeBuildEngine/Construction/Solution/ProjectInSolution.cs#L393

An example solution is: https://github.com/dotnet/corefx/blob/f6ab339f446e37505f93ef9f430801fa1dcc05b8/src/System.Collections.Immutable/System.Collections.Immutable.sln#L40-L41

Note that we should check for indirect recursion as well (loops).

Guide contributeur