From 3918240f8ea71a598a75aa14a100319f1f852cb9 Mon Sep 17 00:00:00 2001 From: Akrosh Gandhi Date: Mon, 11 Mar 2019 16:45:00 -0700 Subject: [PATCH] VarIsImpl for Activationobect should include cross-site vtble checks as well --- lib/Runtime/Types/ActivationObject.cpp | 21 ++++++++++++++------- test/Bugs/misc_bugs.js | 10 ++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/Runtime/Types/ActivationObject.cpp b/lib/Runtime/Types/ActivationObject.cpp index 95888cf1178..557880ed825 100644 --- a/lib/Runtime/Types/ActivationObject.cpp +++ b/lib/Runtime/Types/ActivationObject.cpp @@ -10,11 +10,16 @@ namespace Js { template <> bool VarIsImpl(RecyclableObject* instance) { - return VirtualTableInfo::HasVirtualTable(instance) || - VirtualTableInfo::HasVirtualTable(instance) || - VirtualTableInfo::HasVirtualTable(instance) || - VirtualTableInfo::HasVirtualTable(instance) || - VirtualTableInfo::HasVirtualTable(instance); + return VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance) || + VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance) || + VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance) || + VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance) || + VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance); } BOOL ActivationObject::HasOwnPropertyCheckNoRedecl(PropertyId propertyId) @@ -172,7 +177,8 @@ namespace Js template <> bool VarIsImpl(RecyclableObject* instance) { - return VirtualTableInfo::HasVirtualTable(instance); + return VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance); } BOOL PseudoActivationObject::InitPropertyScoped(PropertyId propertyId, Var value) @@ -211,7 +217,8 @@ namespace Js template <> bool VarIsImpl(RecyclableObject* instance) { - return VirtualTableInfo::HasVirtualTable(instance); + return VirtualTableInfo::HasVirtualTable(instance) || + VirtualTableInfo>::HasVirtualTable(instance); } #if ENABLE_TTD diff --git a/test/Bugs/misc_bugs.js b/test/Bugs/misc_bugs.js index ff785ef87d6..d3bbb8b31d2 100644 --- a/test/Bugs/misc_bugs.js +++ b/test/Bugs/misc_bugs.js @@ -155,6 +155,16 @@ var tests = [ var obj2 = {__proto__ : p}; // This should not call the getPrototypeOf } }, + { + name: "Cross-site activation object", + body: function () { + var tests = [0, 0]; + tests.forEach(function() { + var eval = WScript.LoadScript(0, "samethread").eval; + eval(0); + }); + } + }, { name: "Destructuring declaration should return undefined", body: function () {