Fix access to uninitialised memory that might lead to crashes
authorThiago Macieira <thiago.macieira@intel.com>
Sun, 18 Dec 2011 14:33:52 +0000 (15:33 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 4 Apr 2012 18:22:01 +0000 (20:22 +0200)
QMetaObject is POD, so its constructor is implicit and trivial
(doesn't initialise anything). QAbstractDynamicMetaObject doesn't add
a constructor, so the QMetaObject sub-object remains
uninitialised. The users of either class must ensure they initialise
the members if they will be accessed.

Change-Id: Ibb7f55ff23b78afb1fcb87382b30c8a28804c028
Task: QTBUG-23214
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Martin Jones <martin.jones@nokia.com>
src/qml/qml/qqmlscript.cpp

index b1bb5ed..5104ba8 100644 (file)
@@ -66,6 +66,11 @@ QQmlScript::Object::Object()
 : type(-1), idIndex(-1), metatype(0), synthCache(0), defaultProperty(0), parserStatusCast(-1),
   componentCompileState(0), nextAliasingObject(0), nextIdObject(0)
 {
+    // initialize the members in the meta object
+    extObject.d.superdata = 0;
+    extObject.d.stringdata = 0;
+    extObject.d.data = 0;
+    extObject.d.extradata = 0;
 }
 
 QQmlScript::Object::~Object()