errorDescriptionForValue() should not assume error value is an Object
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Aug 2013 19:44:20 +0000 (19:44 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Aug 2013 19:44:20 +0000 (19:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=119812

Patch by Chris Curtis <chris_curtis@apple.com> on 2013-08-22
Reviewed by Geoffrey Garen.

Added a check to make sure that the JSValue was an object before casting it as an object. Also, in case the parameterized JSValue
has no type, the function now returns the empty string.
* runtime/ExceptionHelpers.cpp:
(JSC::errorDescriptionForValue):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@154457 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/ExceptionHelpers.cpp

index 2f7569d2b05e35369717351e5a1e29281dfe0af4..9878b658680d57397cdc3b19875e500f81b6719b 100644 (file)
@@ -1,3 +1,15 @@
+2013-08-22  Chris Curtis  <chris_curtis@apple.com>
+
+        errorDescriptionForValue() should not assume error value is an Object
+        https://bugs.webkit.org/show_bug.cgi?id=119812
+
+        Reviewed by Geoffrey Garen.
+
+        Added a check to make sure that the JSValue was an object before casting it as an object. Also, in case the parameterized JSValue
+        has no type, the function now returns the empty string. 
+        * runtime/ExceptionHelpers.cpp:
+        (JSC::errorDescriptionForValue):
+
 2013-08-22  Julien Brianceau  <jbrianceau@nds.com>
 
         Fix P_DFGOperation_EJS call for MIPS and ARM EABI.
index e57a9d5734c54b428fec3819286fc6f6f82cb87e..60268aca36bd6b9a404e80e4a5a3406227af8f29 100644 (file)
@@ -106,8 +106,12 @@ JSString* errorDescriptionForValue(ExecState* exec, JSValue v)
         JSObject* object = asObject(v);
         if (object->methodTable()->getCallData(object, callData) != CallTypeNone)
             return vm.smallStrings.functionString();
+        return jsString(exec, object->methodTable()->className(object));
     }
-    return jsString(exec, asObject(v)->methodTable()->className(asObject(v)));
+    
+    ASSERT(v.isEmpty());
+    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=120080 The JSValue should never be empty in this function.
+    return vm.smallStrings.emptyString();
 }
     
 JSObject* createError(ExecState* exec, ErrorFactory errorFactory, JSValue value, const String& message)