From 6312804eb30a25ca688c63da285facce7bf1b718 Mon Sep 17 00:00:00 2001 From: "dslomov@chromium.org" Date: Mon, 29 Sep 2014 08:47:04 +0000 Subject: [PATCH] Access checks test for stores to 'super'. R=dcarney@chromium.org BUG=v8:3330 LOG=N Review URL: https://codereview.chromium.org/609273002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- test/cctest/test-api.cc | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index 66dc5a0..16912e9 100644 --- a/test/cctest/test-api.cc +++ b/test/cctest/test-api.cc @@ -9656,12 +9656,36 @@ TEST(SuperAccessControl) { LocalContext env; env->Global()->Set(v8_str("prohibited"), obj_template->NewInstance()); - v8::TryCatch try_catch; - CompileRun( - "function f() { return super.hasOwnProperty; };" - "var m = f.toMethod(prohibited);" - "m();"); - CHECK(try_catch.HasCaught()); + { + v8::TryCatch try_catch; + CompileRun( + "function f() { return super.hasOwnProperty; };" + "var m = f.toMethod(prohibited);" + "m();"); + CHECK(try_catch.HasCaught()); + } + + { + v8::TryCatch try_catch; + CompileRun( + "function f() { super.hasOwnProperty = function () {}; };" + "var m = f.toMethod(prohibited);" + "m();"); + CHECK(try_catch.HasCaught()); + } + + { + v8::TryCatch try_catch; + CompileRun( + "Object.defineProperty(Object.prototype, 'x', { set : function(){}});" + "function f() { " + " 'use strict';" + " super.x = function () {}; " + "};" + "var m = f.toMethod(prohibited);" + "m();"); + CHECK(try_catch.HasCaught()); + } } -- 2.7.4