Skip to content

Commit 88bebbc

Browse files
committed
Microsoft.Extensions.Configuration models
1 parent 441df72 commit 88bebbc

File tree

5 files changed

+143
-0
lines changed

5 files changed

+143
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/csharp-all
4+
extensible: sourceModel
5+
data:
6+
- ["Microsoft.Extensions.Configuration", "EnvironmentVariablesExtensions", False, "AddEnvironmentVariables", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "", "ReturnValue", "environment", "manual"]
7+
- ["Microsoft.Extensions.Configuration", "EnvironmentVariablesExtensions", False, "AddEnvironmentVariables", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String)", "", "ReturnValue", "environment", "manual"]
8+
- addsTo:
9+
pack: codeql/csharp-all
10+
extensible: summaryModel
11+
data:
12+
- ["Microsoft.Extensions.Configuration", "IConfiguration", True, "get_Item", "(System.String)", "", "Argument[this]", "ReturnValue", "taint", "manual"]
13+
- ["Microsoft.Extensions.Configuration", "IConfigurationBuilder", True, "Build", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"]
14+
- ["Microsoft.Extensions.Configuration", "CommandLineConfigurationExtensions", False, "AddCommandLine", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String[])", "", "Argument[1]", "ReturnValue", "taint", "manual"]
15+
- ["Microsoft.Extensions.Configuration", "CommandLineConfigurationExtensions", False, "AddCommandLine", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String[],System.Collections.Generic.IDictionary<System.String,System.String>)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"]

csharp/ql/test/library-tests/dataflow/flowsources/local/environment/EnvironmentVariables.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections;
3+
using Microsoft.Extensions.Configuration;
34

45
namespace EnvironmentVariables
56
{
@@ -23,5 +24,13 @@ public static void ExpandEnvironmentVariables(string environmentVariable)
2324
{
2425
string expanded = Environment.ExpandEnvironmentVariables("%PATH%");
2526
}
27+
28+
public static void TaintedConfiguration()
29+
{
30+
var config = new ConfigurationBuilder()
31+
.AddEnvironmentVariables()
32+
.Build();
33+
var path = config["PATH"];
34+
}
2635
}
2736
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
semmle-extractor-options: /nostdlib /noconfig
2+
semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj
3+
semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/Microsoft.Extensions.Configuration/8.0.0/Microsoft.Extensions.Configuration.csproj
4+
semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
namespace Microsoft.Extensions.Configuration
2+
{
3+
public interface IConfiguration
4+
{
5+
public string? this[string key] { get; set; }
6+
}
7+
8+
public interface IConfigurationRoot : IConfiguration { }
9+
10+
public interface IConfigurationSource { }
11+
12+
public interface IConfigurationBuilder
13+
{
14+
public System.Collections.Generic.Dictionary<string, object> Properties { get; }
15+
16+
public System.Collections.Generic.IList<IConfigurationSource> Sources { get; }
17+
18+
public IConfigurationRoot Build();
19+
20+
public IConfigurationBuilder Add(IConfigurationSource source);
21+
}
22+
23+
public class ConfigurationBuilder : IConfigurationBuilder
24+
{
25+
public System.Collections.Generic.Dictionary<string, object> Properties { get; }
26+
public System.Collections.Generic.IList<IConfigurationSource> Sources { get; }
27+
28+
public ConfigurationBuilder()
29+
{
30+
Properties = new System.Collections.Generic.Dictionary<string, object>();
31+
Sources = new System.Collections.Generic.List<IConfigurationSource>();
32+
}
33+
34+
public IConfigurationRoot Build()
35+
{
36+
return new ConfigurationRoot();
37+
}
38+
39+
public IConfigurationBuilder Add(IConfigurationSource source)
40+
{
41+
return this;
42+
}
43+
}
44+
45+
public class ConfigurationRoot : IConfigurationRoot
46+
{
47+
public string? this[string key] { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
48+
}
49+
50+
public static class CommandLineConfigurationExtensions
51+
{
52+
public static IConfigurationBuilder AddCommandLine(this IConfigurationBuilder builder, string[] args)
53+
{
54+
return builder;
55+
}
56+
57+
public static IConfigurationBuilder AddCommandLine(this IConfigurationBuilder builder, string[] args, System.Collections.Generic.Dictionary<string, string> switchMappings)
58+
{
59+
return builder;
60+
}
61+
62+
public static IConfigurationBuilder AddCommandLine(this IConfigurationBuilder builder, System.Action<Microsoft.Extensions.Configuration.CommandLine.CommandLineConfigurationSource> configureSource)
63+
{
64+
return builder;
65+
}
66+
}
67+
68+
public static class EnvironmentVariablesConfigurationExtensions
69+
{
70+
public static IConfigurationBuilder AddEnvironmentVariables(this IConfigurationBuilder builder)
71+
{
72+
return builder;
73+
}
74+
75+
public static IConfigurationBuilder AddEnvironmentVariables(this IConfigurationBuilder builder, string prefix)
76+
{
77+
return builder;
78+
}
79+
80+
public static IConfigurationBuilder AddEnvironmentVariables(this IConfigurationBuilder builder, System.Action<Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource> configureSource)
81+
{
82+
return builder;
83+
}
84+
}
85+
86+
namespace CommandLine
87+
{
88+
public class CommandLineConfigurationSource : IConfigurationSource
89+
{
90+
public System.Collections.Generic.Dictionary<string, string> SwitchMappings { get; set; }
91+
public System.Collections.Generic.IEnumerable<string> Args { get; set; }
92+
}
93+
}
94+
95+
namespace EnvironmentVariables
96+
{
97+
public class EnvironmentVariablesConfigurationSource : IConfigurationSource
98+
{
99+
public string? Prefix { get; set; }
100+
}
101+
}
102+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net8.0</TargetFramework>
4+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5+
<OutputPath>bin\</OutputPath>
6+
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<ProjectReference Include="../../Microsoft.Extensions.Primitives/6.0.0/Microsoft.Extensions.Primitives.csproj" />
11+
<ProjectReference Include="../../_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj" />
12+
</ItemGroup>
13+
</Project>

0 commit comments

Comments
 (0)