Title: [124442] trunk/Source/WebCore
Revision
124442
Author
[email protected]
Date
2012-08-02 05:26:13 -0700 (Thu, 02 Aug 2012)

Log Message

[Qt] Uninitialized memory read in QObject runtime bridge
https://bugs.webkit.org/show_bug.cgi?id=92972

Patch by Simon Hausmann <[email protected]> on 2012-08-02
Reviewed by Kenneth Rohde Christiansen.

The vargs array has an initial size of 0 and when calling a method with no return value
and no arguments, vargs remains empty. Therefore unconditional access to vargs[0] results
in access to uninitialized memory.

No new tests, covered by valgrind in existing qobjectbridge tests.

* bridge/qt/qt_runtime.cpp:
(JSC::Bindings::QtRuntimeMetaMethod::call):
* bridge/qt/qt_runtime_qt4.cpp:
(JSC::Bindings::QtRuntimeMetaMethod::call):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (124441 => 124442)


--- trunk/Source/WebCore/ChangeLog	2012-08-02 12:03:13 UTC (rev 124441)
+++ trunk/Source/WebCore/ChangeLog	2012-08-02 12:26:13 UTC (rev 124442)
@@ -1,3 +1,21 @@
+2012-08-02  Simon Hausmann  <[email protected]>
+
+        [Qt] Uninitialized memory read in QObject runtime bridge
+        https://bugs.webkit.org/show_bug.cgi?id=92972
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        The vargs array has an initial size of 0 and when calling a method with no return value
+        and no arguments, vargs remains empty. Therefore unconditional access to vargs[0] results
+        in access to uninitialized memory.
+
+        No new tests, covered by valgrind in existing qobjectbridge tests.
+
+        * bridge/qt/qt_runtime.cpp:
+        (JSC::Bindings::QtRuntimeMetaMethod::call):
+        * bridge/qt/qt_runtime_qt4.cpp:
+        (JSC::Bindings::QtRuntimeMetaMethod::call):
+
 2012-08-02  Zoltan Herczeg  <[email protected]>
 
         Alignment issue for readTime in PluginDatabase.cpp

Modified: trunk/Source/WebCore/bridge/qt/qt_runtime.cpp (124441 => 124442)


--- trunk/Source/WebCore/bridge/qt/qt_runtime.cpp	2012-08-02 12:03:13 UTC (rev 124441)
+++ trunk/Source/WebCore/bridge/qt/qt_runtime.cpp	2012-08-02 12:26:13 UTC (rev 124442)
@@ -1433,7 +1433,7 @@
             if (QMetaObject::metacall(obj, QMetaObject::InvokeMetaMethod, methodIndex, qargs) >= 0)
                 return JSValue::encode(jsUndefined());
 
-            if (vargs[0].isValid())
+            if (vargs.size() > 0 && vargs[0].isValid())
                 return JSValue::encode(convertQVariantToValue(exec, d->m_instance->rootObject(), vargs[0]));
         }
 

Modified: trunk/Source/WebCore/bridge/qt/qt_runtime_qt4.cpp (124441 => 124442)


--- trunk/Source/WebCore/bridge/qt/qt_runtime_qt4.cpp	2012-08-02 12:03:13 UTC (rev 124441)
+++ trunk/Source/WebCore/bridge/qt/qt_runtime_qt4.cpp	2012-08-02 12:26:13 UTC (rev 124442)
@@ -1442,7 +1442,7 @@
             if (QMetaObject::metacall(obj, QMetaObject::InvokeMetaMethod, methodIndex, qargs) >= 0)
                 return JSValue::encode(jsUndefined());
 
-            if (vargs[0].isValid())
+            if (vargs.size() > 0 && vargs[0].isValid())
                 return JSValue::encode(convertQVariantToValue(exec, d->m_instance->rootObject(), vargs[0]));
         }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to