From 27e74e82eb1bbb122903d0a718220c7b0f51234d Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Mon, 12 Mar 2018 21:23:36 -0700 Subject: [PATCH] Fix unbounded stackalloc in System.IO.FileSystem (dotnet/corefx#28004) Commit migrated from https://github.com/dotnet/corefx/commit/bf36018813d2724e5bc9140d72e0d8bf92f2b621 --- .../src/System/IO/Enumeration/FileSystemName.cs | 2 +- .../tests/Enumeration/FileSystemNameTests.netcoreapp.cs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.IO.FileSystem/src/System/IO/Enumeration/FileSystemName.cs b/src/libraries/System.IO.FileSystem/src/System/IO/Enumeration/FileSystemName.cs index fa513f10764..5e23426006e 100644 --- a/src/libraries/System.IO.FileSystem/src/System/IO/Enumeration/FileSystemName.cs +++ b/src/libraries/System.IO.FileSystem/src/System/IO/Enumeration/FileSystemName.cs @@ -34,7 +34,7 @@ public static string TranslateWin32Expression(string expression) return "*"; bool modified = false; - Span stackSpace = stackalloc char[expression.Length]; + Span stackSpace = stackalloc char[32]; ValueStringBuilder sb = new ValueStringBuilder(stackSpace); int length = expression.Length; for (int i = 0; i < length; i++) diff --git a/src/libraries/System.IO.FileSystem/tests/Enumeration/FileSystemNameTests.netcoreapp.cs b/src/libraries/System.IO.FileSystem/tests/Enumeration/FileSystemNameTests.netcoreapp.cs index 7076201e480..a199d2c2983 100644 --- a/src/libraries/System.IO.FileSystem/tests/Enumeration/FileSystemNameTests.netcoreapp.cs +++ b/src/libraries/System.IO.FileSystem/tests/Enumeration/FileSystemNameTests.netcoreapp.cs @@ -143,5 +143,12 @@ public void TranslateExpression(string expression, string expected) { Assert.Equal(expected, FileSystemName.TranslateWin32Expression(expression)); } + + [Fact] + public void TranslateVeryLongExpression() + { + string longString = new string('a', 10_000_000); + Assert.Equal(longString, FileSystemName.TranslateWin32Expression(longString)); + } } } -- GitLab