Skip to content

Commit 08f11df

Browse files
rajatdThomas Moore (CHAKRA)
authored andcommitted
[CVE-2018-8505] Edge - Chakra::TypeConfusion_8_16 JIT - Qihoo 360
1 parent 062b4d9 commit 08f11df

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

lib/Runtime/Language/JavascriptOperators.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4950,13 +4950,18 @@ using namespace Js;
49504950
}
49514951
else if (instanceType == TypeIds_NativeIntArray)
49524952
{
4953-
// Only accept tagged int. Also covers case for MissingItem
4953+
// Only accept tagged int.
49544954
if (!TaggedInt::Is(value))
49554955
{
49564956
return false;
49574957
}
49584958
int32 intValue = 0;
49594959
if (!MemsetConversion<int32, JavascriptConversion::ToInt32>(value, scriptContext, &intValue))
4960+
{
4961+
return false;
4962+
}
4963+
// Special case for missing item
4964+
if (SparseArraySegment<int32>::IsMissingItem(&intValue))
49604965
{
49614966
return false;
49624967
}

lib/Runtime/Library/JavascriptArray.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3424,16 +3424,12 @@ using namespace Js;
34243424
{
34253425
if (TaggedInt::Is(aItem))
34263426
{
3427-
pDestArray->DirectSetItemAt(idxDest, TaggedInt::ToInt32(aItem));
3427+
int32 int32Value = TaggedInt::ToInt32(aItem);
3428+
Assert(!SparseArraySegment<int32>::IsMissingItem(&int32Value));
3429+
pDestArray->DirectSetItemAt(idxDest, int32Value);
34283430
}
34293431
else
34303432
{
3431-
#if DBG
3432-
int32 int32Value;
3433-
Assert(
3434-
JavascriptNumber::TryGetInt32Value(JavascriptNumber::GetValue(aItem), &int32Value) &&
3435-
!SparseArraySegment<int32>::IsMissingItem(&int32Value));
3436-
#endif
34373433
pDestArray->DirectSetItemAt(idxDest, static_cast<int32>(JavascriptNumber::GetValue(aItem)));
34383434
}
34393435
++idxDest;

0 commit comments

Comments
 (0)