Skip to content

Commit cf3ef50

Browse files
Chakra Automationaneeshdk
authored andcommitted
[CVE-2018-8355] Edge - Chakra: JIT: Type confusion with localeCompare - Google, Inc.
1 parent 91bb6d6 commit cf3ef50

File tree

4 files changed

+2
-10
lines changed

4 files changed

+2
-10
lines changed

lib/Backend/Inline.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3418,10 +3418,6 @@ Inline::SetupInlineInstrForCallDirect(Js::BuiltinFunction builtInId, IR::Instr*
34183418
callInstr->SetSrc1(IR::HelperCallOpnd::New(IR::JnHelperMethod::HelperString_Link, callInstr->m_func));
34193419
break;
34203420

3421-
case Js::BuiltinFunction::JavascriptString_LocaleCompare:
3422-
callInstr->SetSrc1(IR::HelperCallOpnd::New(IR::JnHelperMethod::HelperString_LocaleCompare, callInstr->m_func));
3423-
break;
3424-
34253421
case Js::BuiltinFunction::JavascriptString_Match:
34263422
callInstr->SetSrc1(IR::HelperCallOpnd::New(IR::JnHelperMethod::HelperString_Match, callInstr->m_func));
34273423
break;

lib/Backend/InliningDecider.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,6 @@ bool InliningDecider::GetBuiltInInfoCommon(
491491
case Js::JavascriptBuiltInFunction::JavascriptArray_Splice:
492492

493493
case Js::JavascriptBuiltInFunction::JavascriptString_Link:
494-
case Js::JavascriptBuiltInFunction::JavascriptString_LocaleCompare:
495494
goto CallDirectCommon;
496495

497496
case Js::JavascriptBuiltInFunction::JavascriptArray_Join:

lib/Runtime/Library/JavascriptLibrary.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3277,9 +3277,6 @@ namespace Js
32773277
case PropertyIds::link:
32783278
return BuiltinFunction::JavascriptString_Link;
32793279

3280-
case PropertyIds::localeCompare:
3281-
return BuiltinFunction::JavascriptString_LocaleCompare;
3282-
32833280
case PropertyIds::match:
32843281
return BuiltinFunction::JavascriptString_Match;
32853282

@@ -3842,7 +3839,8 @@ namespace Js
38423839
builtinFuncs[BuiltinFunction::JavascriptString_CharAt] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::charAt, &JavascriptString::EntryInfo::CharAt, 1);
38433840
builtinFuncs[BuiltinFunction::JavascriptString_CharCodeAt] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::charCodeAt, &JavascriptString::EntryInfo::CharCodeAt, 1);
38443841
builtinFuncs[BuiltinFunction::JavascriptString_Concat] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::concat, &JavascriptString::EntryInfo::Concat, 1);
3845-
builtinFuncs[BuiltinFunction::JavascriptString_LocaleCompare] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::localeCompare, &JavascriptString::EntryInfo::LocaleCompare, 1);
3842+
// OS#17824730: Don't inline String.prototype.localeCompare because it immediately calls back into Intl.js, which can break implicitCallFlags
3843+
/* No inlining String_LocaleCompare */ library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::localeCompare, &JavascriptString::EntryInfo::LocaleCompare, 1);
38463844
builtinFuncs[BuiltinFunction::JavascriptString_Match] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::match, &JavascriptString::EntryInfo::Match, 1);
38473845
builtinFuncs[BuiltinFunction::JavascriptString_Split] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::split, &JavascriptString::EntryInfo::Split, 2);
38483846
builtinFuncs[BuiltinFunction::JavascriptString_Substring] = library->AddFunctionToLibraryObject(stringPrototype, PropertyIds::substring, &JavascriptString::EntryInfo::Substring, 2);

lib/Runtime/LibraryFunction.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ LIBRARY_FUNCTION(JavascriptString, FromCodePoint, 1, BIF_None
2828
LIBRARY_FUNCTION(JavascriptString, IndexOf, 3, BIF_UseSrc0 | BIF_VariableArgsNumber , JavascriptString::EntryInfo::IndexOf)
2929
LIBRARY_FUNCTION(JavascriptString, LastIndexOf, 3, BIF_UseSrc0 | BIF_VariableArgsNumber , JavascriptString::EntryInfo::LastIndexOf)
3030
LIBRARY_FUNCTION(JavascriptString, Link, 2, BIF_UseSrc0 , JavascriptString::EntryInfo::Link)
31-
LIBRARY_FUNCTION(JavascriptString, LocaleCompare, 2, BIF_UseSrc0 , JavascriptString::EntryInfo::LocaleCompare)
3231
LIBRARY_FUNCTION(JavascriptString, Match, 2, BIF_UseSrc0 | BIF_IgnoreDst , JavascriptString::EntryInfo::Match)
3332
LIBRARY_FUNCTION(JavascriptString, Replace, 3, BIF_UseSrc0 | BIF_IgnoreDst , JavascriptString::EntryInfo::Replace)
3433
LIBRARY_FUNCTION(JavascriptString, Search, 2, BIF_UseSrc0 , JavascriptString::EntryInfo::Search)

0 commit comments

Comments
 (0)