[BlackBerry] JavaScriptVariant can crash when operator= is called with itself
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Sep 2012 20:58:54 +0000 (20:58 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Sep 2012 20:58:54 +0000 (20:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=95859

Patch by Benjamin C Meyer <bmeyer@rim.com> on 2012-09-05
Reviewed by George Staikos.

* Api/JavaScriptVariant.cpp:
(BlackBerry::WebKit::JavaScriptVariant::operator=):
When JavaScriptVariant contains a string and operator= is
called with itself the memory will be free'd in 'this' and
then a copy will be attempted from 'that' resulting in a crash.

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

Source/WebKit/blackberry/Api/JavaScriptVariant.cpp
Source/WebKit/blackberry/ChangeLog

index 1967ae0..5c43387 100644 (file)
@@ -147,6 +147,9 @@ JavaScriptVariant::~JavaScriptVariant()
 
 JavaScriptVariant& JavaScriptVariant::operator=(const JavaScriptVariant& v)
 {
+    if (&v == this)
+        return *this;
+
     switch (v.type()) {
     case Boolean:
         setBoolean(v.booleanValue());
index 8bda833..680cbf3 100644 (file)
@@ -1,3 +1,16 @@
+2012-09-05  Benjamin C Meyer  <bmeyer@rim.com>
+
+        [BlackBerry] JavaScriptVariant can crash when operator= is called with itself
+        https://bugs.webkit.org/show_bug.cgi?id=95859
+
+        Reviewed by George Staikos.
+
+        * Api/JavaScriptVariant.cpp:
+        (BlackBerry::WebKit::JavaScriptVariant::operator=):
+        When JavaScriptVariant contains a string and operator= is
+        called with itself the memory will be free'd in 'this' and
+        then a copy will be attempted from 'that' resulting in a crash.
+
 2012-09-05  Leo Yang  <leoyang@rim.com>
 
         [BlackBerry] Rotation and then reload causes less sized webpage (PR 190469)