runtimeTypeForValue should protect against seeing TDZ value
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Feb 2016 03:31:11 +0000 (03:31 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 9 Feb 2016 03:31:11 +0000 (03:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=154023

Reviewed by Michael Saboff.

There are a few back traces I've seen from crashes that bottom out
inside runtimeTypeForValue. I haven't been able to reproduce
any such crash, but it's likely that we're encountering the
empty JSValue. It's better to just have this function protect
against seeing the empty value instead of dereferencing a null
pointer when it thinks the value is a cell.

* runtime/RuntimeType.cpp:
(JSC::runtimeTypeForValue):

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/RuntimeType.cpp

index ee657ed..c3d5d6f 100644 (file)
@@ -1,3 +1,20 @@
+2016-02-08  Saam Barati  <sbarati@apple.com>
+
+        runtimeTypeForValue should protect against seeing TDZ value
+        https://bugs.webkit.org/show_bug.cgi?id=154023
+
+        Reviewed by Michael Saboff.
+
+        There are a few back traces I've seen from crashes that bottom out
+        inside runtimeTypeForValue. I haven't been able to reproduce
+        any such crash, but it's likely that we're encountering the
+        empty JSValue. It's better to just have this function protect
+        against seeing the empty value instead of dereferencing a null
+        pointer when it thinks the value is a cell.
+
+        * runtime/RuntimeType.cpp:
+        (JSC::runtimeTypeForValue):
+
 2016-02-08  Andreas Kling  <akling@apple.com>
 
         [iOS] Throw away some unlinked code when navigating to a new page.
index 4e7b3a7..ac9fe85 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
  * Copyright (C) Saam Barati <saambarati1@gmail.com>. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -35,6 +35,9 @@ namespace JSC {
 
 RuntimeType runtimeTypeForValue(JSValue value)
 {
+    if (UNLIKELY(!value))
+        return TypeNothing;
+
     if (value.isUndefined())
         return TypeUndefined;
     if (value.isNull())