Permalink
Please sign in to comment.
Browse files
This change contains combined fixes for CVE-2016-3350, CVE-2016-3377 …
…and a defense in depth change in the CustomHeap
Arguments symbol is uninitialized when a function definition with the name arguments occur in the body in non-split scope
When a function definition with the name arguments occurs in the body it
makrs the function as arguments creation is not needed. The arguments is
initialized only at the beginning of the body. So when arguments is used
in the param scope it will be unitialized. Also if arguments symbol is
captured in the param scope we should split the scope as it can be
overwritten in the body.
CustomHeap - FreeAllocation - Bug fix
Premise
- The allocations under interest are the jit page allocations made by the CustomHeap.
- When all bits in page's free bit vector are set, FreeAllocation API in CustomHeap behaves incorrectly - It will set a page's protection to RWX and returns.
Fix
- Refactored FreeAllocation API in CustomHeap - Merged two separate if conditions to a single if condition.
- Added entry condition checks to fail fast.
- Removed virtual keyword in a function and cached freebitVector count
- Adding more release time checks
- Added TestAnyInRange API
[MSRC34310]Array.prototype.map() type confusion
Type confusion when DirectSetItemAt() accesses a native int array return by a
user-defined [@@species] constructor. Fix by replacing with a virtual SetItem() call.
Showing
with
443 additions
and 49 deletions.
- +5 −0 lib/Common/DataStructures/UnitBitVector.h
- +53 −32 lib/Common/Memory/CustomHeap.cpp
- +1 −0 lib/Common/Memory/CustomHeap.h
- +2 −2 lib/Common/Memory/PageAllocator.h
- +19 −9 lib/Parser/Parse.cpp
- +3 −1 lib/Runtime/ByteCode/ByteCodeEmitter.cpp
- +1 −1 lib/Runtime/Library/JavascriptArray.cpp
- +35 −0 test/es6/ES6Species-bugs.js
- +89 −3 test/es6/default-splitscope.js
- +235 −1 test/es6/default.js
Oops, something went wrong.
0 comments on commit
24c4d7d