Skip to content

Eliminate bound checks for "% arr.Length" when possible#130156

Draft
henriquewr wants to merge 12 commits into
dotnet:mainfrom
henriquewr:boundCheckMod
Draft

Eliminate bound checks for "% arr.Length" when possible#130156
henriquewr wants to merge 12 commits into
dotnet:mainfrom
henriquewr:boundCheckMod

Merge branch 'main' into boundCheckMod

cbaa703
Select commit
Loading
Failed to load commit list.
Azure Pipelines / runtime failed Jul 6, 2026 in 2h 30m 21s

Build #20260705.30 had test failures

Details

Tests

  • Failed: 2 (0.00%)
  • Passed: 1,307,903 (98.09%)
  • Other: 25,455 (1.91%)
  • Total: 1,333,360

Annotations

Check failure on line 1 in System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile

See this annotation in the file changed.

@azure-pipelines azure-pipelines / runtime

System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile

Assert.Throws() Failure: Exception type was not an exact match
Expected: typeof(System.UnauthorizedAccessException)
Actual:   typeof(System.IO.IOException)
---- System.IO.IOException : Cannot create 'C:\h\w\A0090878\t\sdxhht44.fn2\dest\a\b' because a file or directory with the same name already exists.
Raw output
   at System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile() in /_/src/libraries/System.Formats.Tar/tests/TarFile/TarFile.ExtractToDirectory.File.Tests.cs:line 548
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(ObjectHandleOnStack target, Void** arguments, ObjectHandleOnStack sig, BOOL isConstructor, ObjectHandleOnStack result)
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) in /_/src/coreclr/System.Private.CoreLib/src/System/RuntimeHandles.cs:line 1188
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) in /_/src/coreclr/System.Private.CoreLib/src/System/Reflection/MethodBaseInvoker.CoreCLR.cs:line 37
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) in /_/src/libraries/System.Private.CoreLib/src/System/Reflection/MethodBaseInvoker.cs:line 57
----- Inner Stack Trace -----
   at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor) in /_/src/libraries/Common/src/System/IO/FileSystem.DirectoryCreation.Windows.cs:line 134
   at System.IO.Directory.CreateDirectory(String path) in /_/src/libraries/System.Private.CoreLib/src/System/IO/Directory.cs:line 34
   at System.Formats.Tar.TarHelpers.CreateDirectory(String fullPath, Nullable`1 mode, SortedDictionary`2 pendingModes) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHelpers.Windows.cs:line 18
   at System.Formats.Tar.TarEntry.ExtractRelativeToDirectory(String destinationDirectoryPath, Boolean overwrite, SortedDictionary`2 pendingModes, Stack`1 directoryModificationTimes, TarHardLinkMode hardLinkMode) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarEntry.cs:line 334
   at System.Formats.Tar.TarFile.ExtractToDirectoryInternal(Stream source, String destinationDirectoryFullPath, TarExtractOptions options, Boolean leaveOpen) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarFile.cs:line 664
   at System.Formats.Tar.TarFile.ExtractToDirectory(String sourceFileName, String destinationDirectoryName, TarExtractOptions options) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarFile.cs:line 448
   at System.Formats.Tar.TarFile.ExtractToDirectory(String sourceFileName, String destinationDirectoryName, Boolean overwriteFiles) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarFile.cs:line 407
   at System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.<>c__DisplayClass16_0.<ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile>b__0() in /_/src/libraries/System.Formats.Tar/tests/TarFile/TarFile.ExtractToDirectory.File.Tests.cs:line 548

Check failure on line 1 in System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile

See this annotation in the file changed.

@azure-pipelines azure-pipelines / runtime

System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile

Assert.Throws() Failure: Exception type was not an exact match
Expected: typeof(System.UnauthorizedAccessException)
Actual:   typeof(System.IO.IOException)
---- System.IO.IOException : Cannot create 'C:\h\w\B72E0A19\t\zva1if24.sgp\dest\a\b' because a file or directory with the same name already exists.
Raw output
   at System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile() in /_/src/libraries/System.Formats.Tar/tests/TarFile/TarFile.ExtractToDirectory.File.Tests.cs:line 548
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) in /_/src/coreclr/System.Private.CoreLib/src/System/Reflection/MethodBaseInvoker.CoreCLR.cs:line 37
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) in /_/src/libraries/System.Private.CoreLib/src/System/Reflection/MethodBaseInvoker.cs:line 57
----- Inner Stack Trace -----
   at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor) in /_/src/libraries/Common/src/System/IO/FileSystem.DirectoryCreation.Windows.cs:line 134
   at System.IO.Directory.CreateDirectory(String path) in /_/src/libraries/System.Private.CoreLib/src/System/IO/Directory.cs:line 34
   at System.Formats.Tar.TarHelpers.CreateDirectory(String fullPath, Nullable`1 mode, SortedDictionary`2 pendingModes) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHelpers.Windows.cs:line 18
   at System.Formats.Tar.TarEntry.ExtractRelativeToDirectory(String destinationDirectoryPath, Boolean overwrite, SortedDictionary`2 pendingModes, Stack`1 directoryModificationTimes, TarHardLinkMode hardLinkMode) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarEntry.cs:line 334
   at System.Formats.Tar.TarFile.ExtractToDirectoryInternal(Stream source, String destinationDirectoryFullPath, TarExtractOptions options, Boolean leaveOpen) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarFile.cs:line 664
   at System.Formats.Tar.TarFile.ExtractToDirectory(String sourceFileName, String destinationDirectoryName, TarExtractOptions options) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarFile.cs:line 448
   at System.Formats.Tar.TarFile.ExtractToDirectory(String sourceFileName, String destinationDirectoryName, Boolean overwriteFiles) in /_/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarFile.cs:line 407
   at System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests.<>c__DisplayClass16_0.<ExtractToDirectory_RejectsChainedSymlinkDirectoryTraversal_WithNestedFile>b__0() in /_/src/libraries/System.Formats.Tar/tests/TarFile/TarFile.ExtractToDirectory.File.Tests.cs:line 548