Title: [208782] trunk
- Revision
- 208782
- Author
- [email protected]
- Date
- 2016-11-15 21:05:38 -0800 (Tue, 15 Nov 2016)
Log Message
Make JSC test functions more robust.
https://bugs.webkit.org/show_bug.cgi?id=164807
Reviewed by Keith Miller.
JSTests:
* stress/jsc-test-functions-should-be-more-robust.js: Added.
Source/_javascript_Core:
* jsc.cpp:
(functionGetHiddenValue):
(functionSetHiddenValue):
Modified Paths
Added Paths
Diff
Modified: trunk/JSTests/ChangeLog (208781 => 208782)
--- trunk/JSTests/ChangeLog 2016-11-16 04:47:20 UTC (rev 208781)
+++ trunk/JSTests/ChangeLog 2016-11-16 05:05:38 UTC (rev 208782)
@@ -1,3 +1,12 @@
+2016-11-15 Mark Lam <[email protected]>
+
+ Make JSC test functions more robust.
+ https://bugs.webkit.org/show_bug.cgi?id=164807
+
+ Reviewed by Keith Miller.
+
+ * stress/jsc-test-functions-should-be-more-robust.js: Added.
+
2016-11-15 Keith Miller <[email protected]>
B3 should support UDiv/UMod
Added: trunk/JSTests/stress/jsc-test-functions-should-be-more-robust.js (0 => 208782)
--- trunk/JSTests/stress/jsc-test-functions-should-be-more-robust.js (rev 0)
+++ trunk/JSTests/stress/jsc-test-functions-should-be-more-robust.js 2016-11-16 05:05:38 UTC (rev 208782)
@@ -0,0 +1,25 @@
+//@ runFTLNoCJIT
+// This test passes if it does not crash or trigger any assertion failures.
+
+function shouldEqual(actual, expected) {
+ if (actual != expected) {
+ throw "ERROR: expect " + expected + ", actual " + actual;
+ }
+}
+
+function test(testAction, expectedException) {
+ var exception;
+ try {
+ testAction();
+ } catch (e) {
+ exception = e;
+ }
+ shouldEqual(exception, expectedException);
+}
+
+test(() => { getHiddenValue(); }, "TypeError: Invalid use of getHiddenValue test function");
+test(() => { getHiddenValue({}); }, "TypeError: Invalid use of getHiddenValue test function");
+
+test(() => { setHiddenValue(); }, "TypeError: Invalid use of setHiddenValue test function");
+test(() => { setHiddenValue({}); }, "TypeError: Invalid use of setHiddenValue test function");
+
Modified: trunk/Source/_javascript_Core/ChangeLog (208781 => 208782)
--- trunk/Source/_javascript_Core/ChangeLog 2016-11-16 04:47:20 UTC (rev 208781)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-11-16 05:05:38 UTC (rev 208782)
@@ -1,3 +1,14 @@
+2016-11-15 Mark Lam <[email protected]>
+
+ Make JSC test functions more robust.
+ https://bugs.webkit.org/show_bug.cgi?id=164807
+
+ Reviewed by Keith Miller.
+
+ * jsc.cpp:
+ (functionGetHiddenValue):
+ (functionSetHiddenValue):
+
2016-11-15 Keith Miller <[email protected]>
B3 should support UDiv/UMod
Modified: trunk/Source/_javascript_Core/jsc.cpp (208781 => 208782)
--- trunk/Source/_javascript_Core/jsc.cpp 2016-11-16 04:47:20 UTC (rev 208781)
+++ trunk/Source/_javascript_Core/jsc.cpp 2016-11-16 05:05:38 UTC (rev 208782)
@@ -1680,15 +1680,29 @@
EncodedJSValue JSC_HOST_CALL functionGetHiddenValue(ExecState* exec)
{
- JSLockHolder lock(exec);
- SimpleObject* simpleObject = jsCast<SimpleObject*>(exec->argument(0).asCell());
+ VM& vm = exec->vm();
+ JSLockHolder lock(vm);
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ SimpleObject* simpleObject = jsDynamicCast<SimpleObject*>(exec->argument(0));
+ if (UNLIKELY(!simpleObject)) {
+ throwTypeError(exec, scope, ASCIILiteral("Invalid use of getHiddenValue test function"));
+ return encodedJSValue();
+ }
return JSValue::encode(simpleObject->hiddenValue());
}
EncodedJSValue JSC_HOST_CALL functionSetHiddenValue(ExecState* exec)
{
- JSLockHolder lock(exec);
- SimpleObject* simpleObject = jsCast<SimpleObject*>(exec->argument(0).asCell());
+ VM& vm = exec->vm();
+ JSLockHolder lock(vm);
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ SimpleObject* simpleObject = jsDynamicCast<SimpleObject*>(exec->argument(0));
+ if (UNLIKELY(!simpleObject)) {
+ throwTypeError(exec, scope, ASCIILiteral("Invalid use of setHiddenValue test function"));
+ return encodedJSValue();
+ }
JSValue value = exec->argument(1);
simpleObject->setHiddenValue(exec->vm(), value);
return JSValue::encode(jsUndefined());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes