-
Notifications
You must be signed in to change notification settings - Fork 793
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added range check to readBlobHeapUncached
Obfuscated assemblies can have a bogus extra reference to mscorlib which has incorrect index in Blob heap for HashValue - index value was out of range of the heap.I guess the assumption was that compiler will not try to realize the whole set of information for this AssemblyRef entry but decompiler will try to do. The problem was that F# compiler is eagerly trying to populate information about referenced assemblies for the given assembly so it crashes during the attempt to read this malformed entry. fixes #517 closes #519 commit 326a7fc Author: Vladimir Matveev <[email protected]> Date: Wed Jul 1 00:27:11 2015 -0700 added tests commit 1d8dd07 Author: Vladimir Matveev <[email protected]> Date: Mon Jun 29 00:14:27 2015 -0700 fix incorrect condition commit 0c0c696 Author: Vladimir Matveev <[email protected]> Date: Sun Jun 28 23:30:38 2015 -0700 added range check to readBlobHeapUncached
- Loading branch information
Showing
6 changed files
with
73 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
@if "%_echo%"=="" echo off | ||
|
||
setlocal | ||
REM Configure the sample, i.e. where to find the F# compiler and C# compiler. | ||
if EXIST build.ok DEL /f /q build.ok | ||
|
||
call %~d0%~p0..\..\..\config.bat | ||
@if ERRORLEVEL 1 goto Error | ||
|
||
if NOT "%FSC:NOTAVAIL=X%" == "%FSC%" ( | ||
REM Skipping test for FSI.EXE | ||
goto Skip | ||
) | ||
|
||
"%FSC%" %fsc_flags% /r:Library.dll /out:test.exe test.fs | ||
@if ERRORLEVEL 1 goto Error | ||
|
||
"%PEVERIFY%" test.exe | ||
@if ERRORLEVEL 1 goto Error | ||
|
||
:Ok | ||
echo Built fsharp %~f0 ok. | ||
echo. > build.ok | ||
endlocal | ||
exit /b 0 | ||
|
||
:Skip | ||
echo Skipped %~f0 | ||
endlocal | ||
exit /b 0 | ||
|
||
|
||
:Error | ||
endlocal | ||
exit /b %ERRORLEVEL% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
@if "%_echo%"=="" echo off | ||
|
||
setlocal | ||
dir build.ok > NUL ) || ( | ||
@echo 'build.ok' not found. | ||
goto :ERROR | ||
) | ||
|
||
call %~d0%~p0..\..\..\config.bat | ||
|
||
%CLIX% .\test.exe | ||
if ERRORLEVEL 1 goto Error | ||
|
||
:Ok | ||
echo Ran fsharp %~f0 ok. | ||
endlocal | ||
exit /b 0 | ||
|
||
:Error | ||
endlocal | ||
exit /b %ERRORLEVEL% | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
open Library | ||
|
||
[<EntryPoint>] | ||
let main _ = | ||
let cls = Class1() | ||
let len = cls.GetLength("123") | ||
printfn "%O" len | ||
if len = 3 then 0 else 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters