dotnet/msbuild

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

Open

#1.599 aberto em 22 de jan. de 2017

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)C# (1.364 forks)batch import
Area: Solution (.sln)help wantedtriaged

Métricas do repositório

Stars
 (5.062 stars)
Métricas de merge de PR
 (Mesclagem média 11d 7h) (125 fundiu PRs em 30d)

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).

Guia do colaborador